【发布时间】: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