【问题标题】:Find exact string in selenium在 selenium 中查找确切的字符串
【发布时间】:2018-08-01 13:10:09
【问题描述】:

目前,我正在尝试通过做

在网页 DOM 中查找字符串
driver.find_element_by_xpath("//*[contains(translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'), '{0}')]".format(text))

但是,这会找到所有将该文本作为子字符串的实例。

是否可以只找到确切的文本?并且不包含文本?

【问题讨论】:

  • 你能分享目标元素的 HTML 示例吗?

标签: python selenium selenium-webdriver xpath webdriver


【解决方案1】:
//*[text()='string']

将只返回完全匹配的字符串。 鉴于,

//*[contains(text(),'string')]

将带有子字符串的所有内容作为“字符串”返回。

【讨论】:

  • doing return self.driver.find_element_by_xpath("//*[text()= translate('{0}', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')]".format(text)) 告诉我它无法定位元素
  • 谢谢你救了我的命 :)
【解决方案2】:

如下使用normalize-space()

driver.find_element_by_xpath("//*[contains(translate(normalize-space(.), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '{0}')]".format(text))

【讨论】:

  • 给定 xpath 表达式 "//*[normalize-space()=(translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'), 'log in')]" 无效:语法错误:该表达式不是合法表达式
  • @Rohil 查看我的更新答案并告诉我状态。
  • 不是棱角分明,而是。该网站也可以是常规的 html 网站。它应该能够检测到我提供给它的文本以查找
  • 也可以是<button onclick="__doPostBack('LoginButton','')" id="LoginButton" type="submit" class="loginbutton">Log in</button>
【解决方案3】:

使用以下代码让它工作:

driver.find_elements_by_xpath("//*[translate(normalize-space(text()),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='{0}']".format(text))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    相关资源
    最近更新 更多