前言
有些class屬性中間有空格,如果直接復(fù)制過來定位是會報(bào)錯的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
這個報(bào)錯意思是說定位語法錯了。
class屬性科普
1.class屬性中間的空格并不是空字符串,那是間隔符號,表示的是一個元素有多個class的屬性名稱
(class屬性是比較特殊的一個,除了這個有多個屬性外,其它的像name,id是沒多個屬性的)
取其中一個唯一的屬性是能定位的,但大多數(shù)情況下,該屬性名有多個元素使用。這時你可以定位所有元素,然后通過下標(biāo)來獲取需要的元素。另外,也可以使用css屬性定位,具體見方法用例
假設(shè)有 class name = col3 fcweak ft12 tal
其中僅 tal唯一
#?方法一:取單個class屬性(如果屬性唯一) ?
Element=driver.find_element_by_class_name("tal")
#?方法二:定位一組取下標(biāo)定位(乃下策)??
Element=driver.find_elements_by_class_name("fcweak?")[0]
Element=driver.find_elements_by_class_name("ft12?")[3]
#?方法三:css定位??
Element=driver.find_element_by_css_selector(".col3.fcweak.ft12.tal")?
#?方法四:取css的單個class屬性也是可以的??
Element=driver.find_element_by_css_selector(".col3")
#?方法五:直接包含空格的CSS屬性定位大法??
Element=driver.find_element_by_css_selector("[class='col3 fcweak ft12 tal']")?
css 定位請看博客 ?https://www.cnblogs.com/zuodaozhudemeng/p/7487798.html