我是Selenium中的新手,并使用python进行构建。最近,我发现了一个问题,想问一个可以帮助我解决这个问题的人。问题是我想要获取的Xpath是随机的,例如:
'// * [@ id =“ wiki-edit-wikiEdit26”] / div / div / div / div [2] / a [1]'
'// * [@ id =“ wiki-edit-wikiEdit27”] / div / div / div / div [2] / a [1]'
'// * [@ id =“ wiki-edit-wikiEdit28”] / div / div / div / div [2] / a [1]'
这三个xpath
用于同一按钮,但是WikiEdit之后的数字将每次更改。因此,有什么方法可以帮助我更流畅地运行脚本?非常感谢你!
这是我的python代码:
broswer.find.element_by_xpath('//*[@id="wiki-edit-wikiEdit26"]/div/div/div/div[2]/a[1]') .click()
答案 0 :(得分:1)
您可以在xpath中使用matches
,
broswer.find.element_by_xpath("//*[matches(@id, '^(wiki-edit-wikiEdit)[0-9]')]/div/div/div/div[2]/a[1]") .click()
因此基本上与ID匹配的内容以wiki-edit-wikiEdit
开头,后跟数字[0-9]
答案 1 :(得分:0)
您只需要格式化字符串即可。
import random
# Random range 1 - 100
x = random.randint(1,100)
broswer.find.element_by_xpath(f'//*[@id="wiki-edit-wikiEdit{x}"]/div/div/div/div[2]/a[1]') .click()
答案 2 :(得分:0)
您可以使用starts-with
或contains
broswer.find.element_by_xpath("//*[contains(@id,'wiki-edit-wikiEdit')]/div/div/div/div[2]/a[1]").click()
此外,不建议使用这么长的xpath。在css-selectors
上使用xpath
。