5

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

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

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

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

4

1 回答 1

1

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

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

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

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

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

于 2013-11-02T00:37:24.173 回答