javascript - 我需要 Selenium JavascriptExecutor 通过 jquery 返回一个元素

标签 javascript webdriver

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

当我将其放入 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/

相关文章:

javascript - 如何在nestjs应用程序中使用时刻

javascript - 使用javascript设置html文本颜色和大小

java - 如何使用 Selenium WebDriver 处理 HtmlUnitDriver 的身份验证?

java - Selenium webdriver - 无法设置浏览器区域设置

javascript - 正则表达式验证不适用于 Google Chrome Android 应用程序,但适用于 Chrome 浏览器 - PC

javascript - 查找除以 2 的 div

javascript - jQuery 和 Twitter Bootstrap 进度条

python - selenium.common.exceptions.WebDriverException : Message: invalid session id using Selenium with ChromeDriver and Chrome through Python

python - selenium.common.exceptions.WebDriverException : Message: invalid session id using Selenium with ChromeDriver and Chrome through Python

使用 selenium 进行 Android Webdriver 自动化测试