【问题标题】:Find texts that contains quotation marks by xpath in Selenium在 Selenium 中通过 xpath 查找包含引号的文本
【发布时间】:2019-12-11 13:53:19
【问题描述】:

我刚刚在 Selenium(Java) 中遇到错误:

无法使用 xpath 表达式定位元素 //*[contains(.,'字段 SomeField 必须是字符串或数组类型 最大长度为'60'。')]

显然,有两个' 破坏了表达式。所以我把代码从

WebElement elem = findElement(By.xpath("//*[contains(.,'" + arg + "')]"));

WebElement elem = findElement(By.xpath("//*[contains(.,'" + arg.toString().replace("'", "\'") + "')]"));
WebElement elem = findElement(By.xpath("//*[contains(.,'" + arg.toString().replace("'", "\\'") + "')]"));
WebElement elem = findElement(By.xpath("//*[contains(.,'" + arg.toString().replace("'", "\\\'") + "')]"));

他们都没有工作。现在我暂时通过这样做来解决它:

WebElement elem = findElement(By.xpath("//*[contains(.,\"" + arg + "\"')]"));

但如果 arg 中包含 ",则该错误会再次出现。

有人知道怎么做吗?感谢您的帮助。

【问题讨论】:

  • 如错误所示...arg 有多长,如果它是一个长字符串,只要它是唯一的,您就可以减少它。
  • 视情况而定。我试图缩短它以删除',但这可能很危险,因为同一页面上可能有类似的文本。所以我最好尝试整个字符串。

标签: selenium xpath findelement


【解决方案1】:

使用String.format 通过以下方式构建您的 xpath:

WebElement elem = findElement(By.xpath(String.format("//*[contains(.,\"%s\")]", arg)));

有关 String.format 的更多信息,请查看 documentation。 格式参数可以在here找到。


arg 只能包含'

WebElement elem = findElement(By.xpath(String.format("//*[contains(.,\"%s\")]", arg)));

arg 只能包含"

WebElement elem = findElement(By.xpath(String.format("//*[contains(.,'%s')]", arg)));

arg 可以同时包含 '"

使用 arg.replace("\"", """); 转义 arg 中的所有 " 并构建您的 Xpath,如

WebElement elem = findElement(By.xpath(String.format("//*[contains(.,\"%s\")]", arg)));

【讨论】:

  • 谢谢,但它对我不起作用。现在我正在使用 WebElement elem = findElement(By.xpath(String.format("//*[contains(.,'%s')]", arg)));并得到错误:无法使用 xpath 表达式定位元素 //*[contains(.,'The field SomeField must be a string or array type with the maximum length of '60'.')] 因为 ....和最开始的一样。
  • @cheny 我更新了我的答案。你能再试一次吗?将' 替换为\"
  • 是的,行得通。但是如果 arg 中有 "(而不是 ') 怎么办?
  • @cheny 更新了我的答案。
  • 很好的修复arg.replace("\"", """)!!!根据 OP 的问题 String.format() 是要走的路!
猜你喜欢
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
相关资源
最近更新 更多