一尘不染

Selenium中的JavaScriptExecutor是什么?

selenium

Selenium WebDriver中的JavaScript Executor是什么?

它的用途是什么?我们如何在Selenium WebDriver中使用它?

一个例子将不胜感激


阅读 1225

收藏
2020-06-26

共1个答案

一尘不染

JavascriptExecutor

JavascriptExecutor
Selenium 接口,由以下所有类实现:

  • FirefoxDriver
  • ChromeDriver
  • InternetExplorerDriver
  • EdgeDriver
  • OperaDriver
  • SafariDriver
  • RemoteWebDriver
  • EventFiringWebDriver

当您由于跨域策略而有时执行 Selenium
脚本时,浏览器会强制您的脚本执行可能会意外失败并且没有足够的错误日志记录。在创建自己的XHR请求或尝试访问另一个框架时,这尤其相关。

您将在UncaughtDOMException中找到详细的讨论[:在页面中列出iframe时,阻止源为“ http://localhost:8080”的框架访问跨域框架

JavascriptExecutor接口提供以下两种方法:

  • executeScript() :此方法在当前选定的框架或窗口的上下文中执行JavaScript。提供的脚本片段将作为匿名函数的主体执行。在脚本中,您需要使用它document来引用当前文档。请注意,脚本完成执行后,局部变量将不可用,尽管全局变量将继续存在。

  • executeAsyncScript() :此方法在当前所选框架或窗口的上下文中执行一段异步JavaScript。与执行同步JavaScript不同,使用此方法执行的脚本必须通过调用提供的回调来显式表示已完成脚本。此回调始终作为最后一个参数注入执行的函数中。


几个例子:

几个例子:

  • 使用JS输入文字

    String js = "arguments[0].setAttribute('value','"+inputText+"')"
    

    ((JavascriptExecutor) webDriver).executeScript(js, element);

  • 双击JavaScript

    new Actions(driver).moveToElement(myElem, posX, posY).perform();
    

    ((JavascriptExecutor)driver).executeScript(jsDoubleClick, myElem, posX, posY);

  • 通过executeScript()发送可变字符串

    String myValue = "80120804076";
    

    WebElement pesel = driver.findElement(fldPesel);
    jse.executeScript(“arguments[0].value=’” + myValue + “’;”, pesel);

通过Selenium WebDriver从JavascriptExecutor接口使用executeScript方法时,arguments
[0]和arguments [1]是什么意思,
也可以找到有关 参数 的详细讨论。


tl; dr

跨域策略文件规范

2020-06-26