1. 程式人生 > >seleniunm定位className有空格

seleniunm定位className有空格

-inputtext dlemail’]").send_keys(“yoyo”)

前言

有些class屬性中間有空格,如果直接複製過來定位是會報錯的InvalidSelectorException: Message:

The given selector u-label f-dn is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: Compound class names not permitted

這個報錯意思是說定位語法錯了。

一、定位帶空格的class屬性

1.以126郵箱為例:http://mail.126.com/,定位賬號輸入框

2.如果直接複製過來用class屬性定位是會報錯的

二、class屬性科普

1.class屬性中間的空格並不是空字串,那是間隔符號,表示的是一個元素有多個class的屬性名稱

(class屬性是比較特殊的一個,除了這個有多個屬性外,其它的像name,id是沒多個屬性的)

2.想補習html基礎知識的可以參考菜鳥教程:http://www.runoob.com/html/html-attributes.html

三、class定位

1.既然知道class屬性有空格是多個屬性了,那定位的時候取其中的一個就行(並且要唯一),也就是說class=“j-inputtext dlemail”,

取j-inputtext 和dlemail都是可以的,這樣這個class屬性在頁面上唯一就行

2.那麼問題來了:如何才知道這個元素的某個屬性是不是在頁面上是唯一的呢?

四、判斷元素唯一性

1.F12切換到HTML介面,在搜尋框輸入關鍵字搜尋,如:j-inputtext,然後按回車搜尋,看頁面上有幾個class屬性中有j-inputtext這個屬性的,就知道是不是唯一的了。

五、class屬性不唯一怎麼辦

1.如果這個class的多個屬性都不是唯一的咋辦呢,元素不唯一也不用怕,可以用複數定位,把所有的相同元素定位出來,按下標取第幾個就行。

六、css定位

1.css來定位class屬性的元素前面加個點(.)就行,然後空格變成點(.)就能定位了

2.當然css也可以取class屬性的其中一個屬性(頁面上唯一的)來定位,定位方法是靈活多變的

七、參考程式碼

coding:utf-8

from selenium import webdriver
driver = webdriver.Firefox()
driver.get(“http://mail.126.com/”)
driver.implicitly_wait(20)

driver.switch_to.frame(“x-URS-iframe”)

方法一:取單個class屬性

driver.find_element_by_class_name(“dlemail”).send_keys(“yoyo”)
driver.find_element_by_class_name(“dlpwd”).send_keys(“12333”)

方法二:定位一組取下標定位(乃下策)

driver.find_elements_by_class_name(“j-inputtext”)[0].send_keys(“yoyo”)
driver.find_elements_by_class_name(“j-inputtext”)[1].send_keys(“12333”)

方法三:css定位

driver.find_element_by_css_selector(".j-inputtext.dlemail").send_keys(“yoyo”)
driver.find_element_by_css_selector(".j-inputtext.dlpwd").send_keys(“123”)

方法四:取單個class屬性也是可以的

driver.find_element_by_css_selector(".dlemail").send_keys(“yoyo”)
driver.find_element_by_css_selector(".dlpwd").send_keys(“123”)

方法五:直接包含空格的CSS屬性定位大法

driver.find_element_by_css_selector("[class=‘j-inputtext dlemail’]").send_keys("yoyo

作者:獵摘網際網路軟體測試業界技術文章專用部落格
來源:CSDN
原文:https://blog.csdn.net/cyjs1988/article/details/75006167
版權宣告:本文為博主原創文章,轉載請附上博文連結!