JavascriptExecutor 如何在 selenium webdriver 中工作

Posted

技术标签:

【中文标题】JavascriptExecutor 如何在 selenium webdriver 中工作【英文标题】:How does JavascriptExecutor works in selenium webdriver 【发布时间】:2013-10-29 21:44:13 【问题描述】:

当有人使用 selenium 的 javascriptExecutor 对象在网页中插入一些 javascript 并执行它时,这段 javascript 代码在哪里以及它是如何运行的?

我的意思是它是永远位于页面中(直到重新加载页面)还是从外部执行。如果它位于页面中,是否可以再次使用该代码?

另外,如果页面中已经运行了其他一些 javascript 代码,那么会发生什么情况,插入的代码是等待其他 js 代码停止还是从浏览器外部并行执行。

我问这个问题是因为我正在研究 selenium 并使用JavaScriptExecutor。所以我只是想知道它在内部是如何运作的。

【问题讨论】:

【参考方案1】:

在查看了JavascriptExecutor 的所有 API 和文档后,我发现了这一点。

它有两种方法,即executeScriptexecuteAsyncScript。第一种方法是同步的,所以如果页面上已经运行了其他方法,那么注入的脚本可能会等待该脚本完成。

另一种方法执行任何异步脚本(如 ajax 调用或 settimeout 函数),因此注入的脚本不必等待。

插入的脚本也作为匿名函数的主体执行。脚本完成后局部变量会变小,但全局变量会留在页面中,并且可能在脚本完成后可以重复使用。

如果有人对此有更多信息,请提供。谢谢。

【讨论】:

以上是关于JavascriptExecutor 如何在 selenium webdriver 中工作的主要内容,如果未能解决你的问题,请参考以下文章

Selenium JavascriptExecutor 详解

使用 JavascriptExecutor 发送密钥并点击网页元素

JavascriptExecutor(Selenium WebDriver C#)不断返回空对象

使用JavascriptExecutor改变页面元素

(转)Selenium-11: Execute JavaScript with JavascriptExecutor

JavascriptExecutor的UI自动化实战