Python+Selenium自動化測試框架--利用css_selector(CSS)定位元素


本章主要學習利用css_selector定位元素,通過百度搜索編輯框進行學習

CSS選擇器的常見語法

 

 

 

find_element_by_css_selector()方法用於 CSS 語言定位元素

一、通過 class 屬性定位:

 1 # coding=utf-8
 2 from selenium import webdriver
 3 import time
 4 
 5 driver = webdriver.Chrome()
 6 driver.maximize_window()
 7 driver.implicitly_wait(5)
 8 
 9 driver.get("http://www.baidu.com")
10 try:
11     driver.find_element_by_css_selector(".s_ipt").send_keys("selenium")
12     driver.find_element_by_css_selector(".bg.s_btn").click()
13     time.sleep(3)
14     print("測試通過,CSS定位成功")
15 except Exception as e:
16     print("測試失敗,CSS定位失敗", format(e))
17 driver.quit()

點號(.)表示通過 class 屬性來定位元素。

注意:

  class屬性中間的空格並不是空字符串,那是間隔符號,表示的是一個元素有多個class的屬性名稱,在整個HTML文檔,使用CSS中的同一個class類可能是一個或多個!

解決方式:

1.class屬性唯一但是有空格,選擇空格兩邊唯一的哪一個。

2.class屬性不唯一的話,可以用復數定位,把所有相同元素定位出來,取第幾個就行。

3.class多個屬性時要給元素前面加個點(.)就行,然后空格變成了點(.)就能定位了。

至於其它的方法應該還有,但是我們不需要全部掌握,只需要達到目的(准確定位到元素)即可

 

二、通過 id 屬性定位:

 1 # coding=utf-8
 2 from selenium import webdriver
 3 import time
 4 
 5 driver = webdriver.Chrome()
 6 driver.maximize_window()
 7 driver.implicitly_wait(5)
 8 
 9 driver.get("http://www.baidu.com")
10 try:
11     driver.find_element_by_css_selector("#kw").send_keys("selenium")
12     driver.find_element_by_css_selector("#su").click()
13     time.sleep(3)
14     print("測試通過,CSS定位成功")
15 except Exception as e:
16     print("測試失敗,CSS定位失敗", format(e))
17 driver.quit()

井號(#)表示通過 id 屬性來定位元素。


三、通過標簽名定位:

  在 CSS 語言中用標簽名定位元素不需要任何符號標識,直接使用標簽名即可,但我們前面已經了解到標簽名重復的概率非常大,所以通過這種方式很難唯一的標識一個元素。

目前我還沒學會

四、通過父子關系定位:

 1 # coding=utf-8
 2 from selenium import webdriver
 3 import time
 4 
 5 driver = webdriver.Chrome()
 6 driver.maximize_window()
 7 driver.implicitly_wait(5)
 8 
 9 driver.get("http://www.baidu.com")
10 try:
11     driver.find_element_by_css_selector("span>input").send_keys("selenium")
12     driver.find_element_by_css_selector("span>input").click()
13     time.sleep(3)
14     print("測試通過,CSS定位成功")
15 except Exception as e:
16     print("測試失敗,CSS定位失敗", format(e))
17 driver.quit()

上面的寫法表示有父親元素,它的標簽名叫 span,查找它的所有標簽名叫 input 的子元素。

五、通過屬性定位:

 1 # coding=utf-8
 2 from selenium import webdriver
 3 import time
 4 
 5 driver = webdriver.Chrome()
 6 driver.maximize_window()
 7 driver.implicitly_wait(5)
 8 
 9 driver.get("http://www.baidu.com")
10 try:
11     driver.find_element_by_css_selector("input[autocomplete='off']").send_keys("selenium")
12     driver.find_element_by_css_selector("input[value='百度一下']").click()
13     time.sleep(3)
14     print("測試通過,CSS定位成功")
15 except Exception as e:
16     print("測試失敗,CSS定位失敗", format(e))
17 driver.quit()

在 CSS 當中可以使用元素的任意屬性,只要這些屬性可以唯一的標識這個元素。

六、組合定位:

 1 # coding=utf-8
 2 from selenium import webdriver
 3 import time
 4 
 5 driver = webdriver.Chrome()
 6 driver.maximize_window()
 7 driver.implicitly_wait(5)
 8 
 9 driver.get("http://www.baidu.com")
10 try:
11     driver.find_element_by_css_selector("span.bg.s_ipt_wr>input.s_ipt").send_keys("selenium")
12     driver.find_element_by_css_selector("span.bg.s_btn_wr>input#su").click()
13     time.sleep(3)
14     print("測試通過,CSS定位成功")
15 except Exception as e:
16     print("測試失敗,CSS定位失敗", format(e))
17 driver.quit()

  有一個父元素,它的標簽名叫 span,它有一個 class 屬性值叫 bg s_ipt_wr,它有一個子元素,標簽名叫 input,並且這個子元素的 class 屬性值叫 s_ipt。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM