JavascriptExecutor 如何在 selenium webdriver 中工作

me_*_*jay 5 javascript selenium execution selenium-webdriver

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

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

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

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

me_*_*jay 1

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

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

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

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

如果有人有更多这方面的信息,请提供。谢谢。