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

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

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

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

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

【问题讨论】:

    标签: javascript selenium selenium-webdriver execution


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      最近更新 更多