📅  最后修改于: 2023-12-03 15:34:54.631000             🧑  作者: Mango
在 Selenium Webdriver 中,XPath 是一种常用的定位元素的方式。XPath 是一种非常灵活的语言,可以通过简单的语法来定位页面上的任何元素。其中,contains()
是 XPath 中的一个函数,可以用来查找包含指定文本的元素。
contains()
是 XPath 在定位元素时比较常见的函数之一,其语法如下:
//标签名[@属性名称='属性值' and contains(text(),'文本内容')]
其中, //
表示从根节点开始查找,标签名
是要查找元素的标签名,@属性名称='属性值'
表示要查找的元素具有该属性且属性值为 属性值
, contains(text(),'文本内容')
表示查找包含文本内容的元素。
使用 contains()
定位元素主要有两种场景:定位输入框和定位动态元素。
定位输入框常常需要使用 contains()
函数来实现用户在输入框中输入部分内容即可匹配定位该输入框的场景。
例如,我们要定位百度首页的搜索框元素:
driver.find_element_by_xpath('//input[@id="kw" and contains(@name,"wd")]')
以上 XPath 表达式意为在 id 为 "kw" 的元素中查找包含 name 属性值为 "wd" 的元素。
网页中一些元素可能是动态的,会因为 Ajax 等操作而发生改变。这时,我们需要使用 contains()
函数从元素的部分文本匹配来定位这些动态元素。
例如,我们要定位淘宝首页的包含 "女装" 文字的商品:
driver.find_element_by_xpath('//div[contains(@class,"item-info") and contains(text(),"女装")]')
以上 XPath 表达式意为在 class 包含 "item-info" 且包含 "女装" 文字的 div 元素中定位某个商品。
使用 contains()
函数定位元素可以提高定位元素的准确性和灵活性,尤其是在定位动态元素时, contains()
函数是一种非常有效的方式。