我对此束手无策,我确信答案很简单,但我就是想不出来。
当我将其放入 google Chrome 的控制台时,我有一个 jquery 选择器可以完美地找到元素:
$(".answer__label:contains('Yes')")
现在我想用它来检索 WebDriver 测试中的元素,因此我按以下方式使用 JavascriptExecutor:
private WebElement findByJSText(String text) {
String script = String.format("return ('.answer__label:contains('%s')')", text);
WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript(script);
return element;
}
这给出了错误“括号中缺少 )”。我到处都看到过对此错误的引用,但似乎没有一个适用于我的情况。
我该如何按摩才能正确返回元素?
(请不要回复告诉我使用 driver.findElement(By.linkText),谢谢)
附录
这是我最终的工作方法:
private WebElement findByJSText(String text) {
//String script = String.format("return $('.answer__label:contains('%s')')", text);
String script = String.format("return $(\".answer__label:contains('%s')\")[0]", text);
WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript(script);
return element;
}
我可以为 css 字符串添加第二个参数,以使其更加灵活。
感谢大家的帮助!
最佳答案
在这一行中:
String script = String.format("return ('.answer__label:contains('%s')')", text);
你的javascript代码有错误,jquery $
函数在哪里?正确的js代码应该是:
String script = String.format("return $('.answer__label:contains('%s')')", text);
编辑:
您的 '
位于另一个 '
中。这就是问题所在,我尝试了以下 js 代码,它对我来说工作正常:
String script = String.format("return $(\".answer__label:contains('%s')\")", text);
关于javascript - 我需要 Selenium JavascriptExecutor 通过 jquery 返回一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25802518/