📜  Selenium Webdriver CSS定位-子字符串匹配(1)

📅  最后修改于: 2023-12-03 14:47:22.238000             🧑  作者: Mango

Selenium Webdriver CSS定位-子字符串匹配

在Selenium中,有许多种方法从网页中定位元素。其中之一是使用CSS选择器。CSS选择器可以根据元素的属性、标记名和层级关系来选择元素。

有时,在寻找元素时并不知道其完整属性值。在这种情况下,可以使用子字符串匹配选取元素。这种技术可以选择属性值中包含特定字符串的元素。

包含子字符串

要选择包含子字符串的元素,可以使用属性包含选择器(*=)。例如,如果要选择一个<div>元素,其class属性中包含menu的值,则可以使用以下代码:

element = driver.find_element_by_css_selector('div[class*=menu]')

上述代码中,*=指示选择器中包含menu子字符串的所有元素。

以子字符串开头

要选择以特定子字符串开头的元素,可以使用属性前缀选择器(^=)。例如,如果要选择href属性以https开头的<a>元素,则可以使用以下代码:

element = driver.find_element_by_css_selector('a[href^="https"]')

上述代码中,^=指示选择器只选择以https开头的元素。

以子字符串结尾

要选择以特定子字符串结尾的元素,可以使用属性后缀选择器($=)。例如,如果要选择以.pdf文件扩展名结尾的<a>元素,则可以使用以下代码:

element = driver.find_element_by_css_selector('a[href$=".pdf"]')

上述代码中,$=指示选择器只选择以.pdf结尾的元素。

包含特定值的子字符串

要选择包含特定值的子字符串的元素,可以使用属性匹配选择器(|=)。例如,如果要选择class属性包含单词header的元素,则可以使用以下代码:

element = driver.find_element_by_css_selector('[class|=header]')

上述代码中,|=指示选择器只选择class属性以header开头的元素。

使用子字符串匹配选择器时要小心,因为它们可能会返回多个匹配项。确保尽可能具体地指定您的选择器,以免选择错误的元素。

结论

子字符串匹配是一种有用的技术,可以让您选择不知道完整属性值的元素。在Selenium Webdriver中,CSS选择器是很好的方法来定位元素。使用属性包含、前缀、后缀和匹配选择器时请小心,并尽可能具体地指定您的选择器。