1. 程式人生 > >Python-Selenium中使用JS方式定位元素

Python-Selenium中使用JS方式定位元素

一、以下總結了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 ,這個是需要新增單引號(‘’),