【问题标题】:How can I find the randomly Xpath using Selenium?如何使用 Selenium 找到随机 Xpath?
【发布时间】:2018-07-02 05:36:41
【问题描述】:

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

【问题讨论】:

  • 您要更改否。在 wikiEdit 中?
  • 请提供 HTML 示例块
  • 不,我只是想让我的脚本顺利运行,因为我提到的xpath每次得到它都会改变。这会使我的脚本不稳定
  • 要么使用匹配或包含字符串到 "wikiEdit" 的文本,要么使用其他定位器,因为带有字母数字值的 id 属性将主要更改其值。

标签: python html selenium selenium-webdriver xpath


【解决方案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]

【讨论】:

  • 您好,该脚本出现如下错误。文件“C:\Auto\tttt.py”,第 37 行 jira.find_element_by_xpath('//*[matches(@id, '^(wiki-edit-wikiEdit)[0-9]')]/div/div/ div/div[2]/a[1]').click() ^ SyntaxError: invalid syntax
  • 注意 python 字符串。为您的 xpath 使用双引号。我已经更新了我的答案。现在使用它。
  • 我尝试了您更新的脚本,但它仍然显示错误,这意味着这不是有效的 XPath。非常感谢!
  • syntax error 并不意味着它不是有效的 xpath。粘贴您正在尝试的代码
【解决方案2】:

你只需要格式化你的字符串..

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

【讨论】:

  • 嗨,我也试试你的脚本,但它显示错误如下。我不知道为什么会发生这种情况。请帮我弄清楚。非常感谢! SyntaxError: 无效语法
  • 试试这个 - broswer.find.element_by_xpath(r'//*[@id="wiki-edit-wikiEdit%s"]/div/div/div/div[2]/a [1]'%x) .click()
【解决方案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

【讨论】:

  • 对不起,因为我是新人,请给我一个如何使用css-selector的例子。另外,我使用了你的脚本,但它显示错误并且无法得到响应。 CSS:#wiki-edit-wikiEdit1 > div > div > div > div:nth-child(2) > a:nth-child(1) > span
猜你喜欢
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多