我需要SeleniumJavaScriptExecutor通过jquery返回一个元素

我需要SeleniumJavaScriptExecutor通过jquery返回一个元素,javascript,webdriver,Javascript,Webdriver,我对此束手无策,我相信答案很简单,但我就是想不出来 我有一个jquery选择器,当我把它放在google Chrome的控制台中时,它可以完美地找到和元素: $(".answer__label:contains('Yes')") 现在我想用它来检索WebDriver测试中的一个元素,因此我以以下方式使用JavascriptExecutor: private WebElement findByJSText(String text) { String script = String.for

我对此束手无策,我相信答案很简单,但我就是想不出来

我有一个jquery选择器,当我把它放在google Chrome的控制台中时,它可以完美地找到和元素:

$(".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);

谢谢你接电话。我已经编辑过很多次了,我一定是在某个地方把它弄砸了然而,这仍然给了我“缺少)参数列表后”的错误。就是这样!非常感谢。