Python-Selenium中使用JS方式定位元素
阿新 • • 發佈:2018-12-22
一、以下總結了5種js定位的方法
除了id是定位到的是單個element元素物件,其它的都是elements返回的是list物件
1.通過id獲取
document.getElementById(“id”)
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
import unittest
from time import sleep
class TestDeom(unittest.TestCase):
@classmethod
def setUpClass (cls):
print("開始執行測試用例")
driver_path = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"
cls.driver = webdriver.Chrome(executable_path=driver_path)
def test_executeScript(self):
url = "https://www.baidu.com/"
self.driver.get(url)
searchInputBoxJs = "document.getElementById('kw').value='光榮之路';"
searchButtonJS = "document.getElementById('su').click()"
try:
self.driver.execute_script(searchInputBoxJs)
sleep(2)
self.driver.execute_script(searchButtonJS)
sleep(2)
self.assertTrue( u"百度百科" in self.driver.page_source)
except WebDriverException as e:
print("在頁面中沒有找到需要操作的頁面元素", e)
except AssertionError as e:
print("頁面中不存在斷言的的關鍵字串")
except Exception as e:
print(e)
@classmethod
def tearDownClass(cls):
cls.driver.quit()
if __name__ == '__main__':
unittest.main()
2.通過name獲取
document.getElementsByName(“Name”) -----(獲取的是list)
修改部分程式碼如下:
searchInputBoxJs = "document.getElementsByClassName('s_ipt')[0].value='光榮之路';"
sleep(2)
searchButtonJS = "document.getElementsByClassName('bg.s_btn')[0].click()"
3.通過標籤名選取元素
document.getElementsByTagName(“tag”) -----(獲取的是list)
4.通過CLASS類選取元素
document.getElementsByClassName(“class”) -----(獲取的是list)
相容性:IE8及其以下版本的瀏覽器未實現getElementsByClassName方法
5.通過CSS選擇器選取元素
- HTML5向Web API新引入了 document.querySelector()和document.querySelectorAll()兩個方法,都可以接收三種類型的引數:id(#),class(,),標籤,就像jquery選擇器,引數需要是合法的CSS選擇語法。
- 用起來更方便的從DOM中選取元素,功能類似於jquery的選擇器,這樣在寫原生js程式碼的時候就方便了許多。
document.querySelector(“css selector") -----(獲取的是單個元素)
document.querySelectorAll(“css selector”) -----(獲取的是元素list)
修改部分程式碼如下:
# 方式一:
searchInputBoxJs = "document.querySelector('input#kw').value='光榮之路';"
searchButtonJS = "document.querySelector('input#su').click()"
# 方式二:
input_css = "input#kw"
click_css = "input#su"
searchInputBoxJs = "document.querySelector('%s').value='光榮之路';" % input_css
searchButtonJS = "document.querySelector('%s').click()" % click_css
# 注意:
searchInputBoxJs & searchButtonJS 裡面的%s ,這個是需要新增單引號(‘’),