Selenium 中的 JavaScriptExecutor 是什么?

Man*_*ula 9 javascript java selenium webdriver selenium-webdriver

Selenium WebDriver 中的 JavaScript Executor 是什么?

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

一个例子将不胜感激

Deb*_*anB 7

Javascript执行器

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

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

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

您将在Uncaught DOMException: Blocked a frame with origin "http://localhost:8080" from accessing a cross-origin frame while列出页面中的 iframe 中找到详细讨论

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

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

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


例子

几个例子:


参考

您还可以在以下位置找到一些关于参数的详细讨论:


tl;博士

跨域策略文件规范