【问题标题】:How to use following JS code line with java selenium webdriver?java selenium webdriver如何使用以下JS代码行?
【发布时间】:2018-01-30 11:09:26
【问题描述】:

说明: 我正在使用 chrome 控制台(也附加了其图像)使用以下 JS 代码行,并且此代码提供了我的 Web 应用程序页面中打开的选项卡的 ID(还附加了选项卡图像以了解输出)。但是现在我不知道如何在我使用 Java 中的 Selenium Web-driver 编写的自动化脚本中使用这个 JS 代码行。

代码:

Array.from(document.querySelectorAll("[class*='x-tab x-unselectable x-tab-after-title x-box-item x-tab-default x-top x-tab-top x-标签-默认-顶部 x-可关闭 x-标签-可关闭 x-标签-默认-可关闭 x-可关闭-顶部 x-标签-可关闭-顶部 x-标签-默认-可关闭-顶部 x-icon-text-left x- tab-icon-text-left x-tab-default-icon-text-left']")).map(function(item){return item.id;})

Tabs screen-shot

问题:

谁能告诉我如何使用 Java 在 selenium Webdriver 脚本中使用此代码行? 我在为我的应用程序打开的 chrome 控制台上使用上面的 JS 代码行,它给出了正确的结果。

Output of above code line using chrome console

【问题讨论】:

  • 请阅读为什么a screenshot of code is a bad idea。粘贴代码并正确格式化。
  • 你用谷歌搜索过这个吗?一个简单的“java selenium execute javascript”的google会返回回答这个问题的各种结果。
  • 嗨,杰夫,感谢您的评论。是的,我用谷歌搜索了它。但无法获得成功,这就是我在这里问的原因。而截图只是上面粘贴代码的输出。如果您可以提供帮助,请告诉我解决方案。谢谢
  • 另外,我已经编辑了我的问题。

标签: java google-chrome selenium-webdriver tabs console


【解决方案1】:

我认为你可以像这样使用executeScript 方法:

((JavascriptExecutor) driver).executeScript("arguments[0].click();", element); //click the WebElement via Javascript.

在您的情况下,您的代码如下所示:

((JavascriptExecutor) driver).executeScript("return Array.from(document.querySelectorAll(\"[class*='x-tab x-unselectable x-tab-after-title x-box-item x-tab-default x-top x-tab-top x-tab-default-top x-closable x-tab-closable x-tab-default-closable x-closable-top x-tab-closable-top x-tab-default-closable-top x-icon-text-left x-tab-icon-text-left x-tab-default-icon-text-left']\")).map(function(item){return item.id;})");

executeScript 返回一个Object 的实例,因此为了使用它,您必须将数组保存在一个变量中并强制转换为ArrayList。您必须在您的 javascript 中添加 return 以告诉 WebDriver 此方法将返回一些内容。

尝试以下方法:

List<String> listOfIds = (List<String) ((JavascriptExecutor) driver).executeScript("return Array.from(document.querySelectorAll(\"[class*='x-tab x-unselectable x-tab-after-title x-box-item x-tab-default x-top x-tab-top x-tab-default-top x-closable x-tab-closable x-tab-default-closable x-closable-top x-tab-closable-top x-tab-default-closable-top x-icon-text-left x-tab-icon-text-left x-tab-default-icon-text-left']\")).map(function(item){return item.id;})");

我会给你一个警告Type safety: Unchecked cast from Object to List&lt;String&gt;,我不知道如何提供检查演员表。但是,这应该可行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 2012-08-26
    • 2015-09-26
    • 2013-05-30
    • 2013-04-14
    • 2014-12-06
    • 1970-01-01
    相关资源
    最近更新 更多