我需要SeleniumJavaScriptExecutor通过jquery返回一个元素
我对此束手无策,我相信答案很简单,但我就是想不出来 我有一个jquery选择器,当我把它放在google Chrome的控制台中时,它可以完美地找到和元素:我需要SeleniumJavaScriptExecutor通过jquery返回一个元素,javascript,webdriver,Javascript,Webdriver,我对此束手无策,我相信答案很简单,但我就是想不出来 我有一个jquery选择器,当我把它放在google Chrome的控制台中时,它可以完美地找到和元素: $(".answer__label:contains('Yes')") 现在我想用它来检索WebDriver测试中的一个元素,因此我以以下方式使用JavascriptExecutor: private WebElement findByJSText(String text) { String script = String.for
$(".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);
谢谢你接电话。我已经编辑过很多次了,我一定是在某个地方把它弄砸了然而,这仍然给了我“缺少)参数列表后”的错误。就是这样!非常感谢。