如何使用Selenium找到随机Xpath?

2024-10-04 01:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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() 

Tags: 方法dividseleniumwiki成员数字edit
3条回答

您可以使用starts-withcontains

broswer.find.element_by_xpath("//*[contains(@id,'wiki-edit-wikiEdit')]/div/div/div/div[2]/a[1]").click()

另外,不建议使用这么长的xpath。在css-selectors上使用xpath。在

您可以在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]的内容

你只需要格式化你的字符串。。在

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()

相关问题 更多 >