2

我刚刚在 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 包含在其中,则该错误将再次出现"

有谁知道该怎么做?谢谢你的帮助。

4

1 回答 1

3

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

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

有关 String.format 的更多信息,请查看它的文档。格式参数可以在这里找到。


arg 只能包含'

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

arg 只能包含"

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

arg 可以同时包含'and"

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

WebElement elem = findElement(By.xpath(String.format("//*[contains(.,\"%s\")]", arg)));
于 2019-12-11T14:11:59.843 回答