在Selenium定位时,有可能会遇见有些元素标签属性值是随机生成的,导致无法通过这些属性值定位。比如一个div的id=“test_109828”,这id后面的数子串是随机生成的,无法通过id定位,但是其前面开头的test_是不会变的。我们就可以通过xpath提供的模糊定位方法进行定位:
driver.find_element_by_xpath("//div[satrts-with(@id,'test_')]")
像这样的模糊定位方法xpath提供了三个:
a属性的值以b开头
starts-with(a,b)
a属性的值以b结尾
ends-with(a,b)
a属性的值包含b
contains(a,b)
其中a是标签的属性比如@id、@value等,b是a属性值中的部分不变内容。
就以百度首页为例子展示一下代码怎么写(谁然这个不是动态的):
from selenium import webdriver
url ='https://www.baidu.com/'
driver = webdriver.Chrome()
driver.get(url)# 定位id以k开头的input标签
driver.find_element_by_xpath("//input[starts-with(@id,'k')]").send_keys("hhhhh")# 定位value为包含’百度一下‘的input标签
driver.find_element_by_xpath("//input[contains(@value,'百度一下')]").click()
版权归原作者 今天也是敲代码的一天哦 所有, 如有侵权,请联系我们删除。