javascript - JavascriptExecutor 在 selenium webdriver 中是如何工作的

标签 javascript selenium selenium-webdriver execution

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

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

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

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

最佳答案

在查看了 JavascriptExecutor 的所有 API 和文档之后,这就是我的发现。

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

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

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

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

关于javascript - JavascriptExecutor 在 selenium webdriver 中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669776/

相关文章:

javascript - API 中缺少查找?

javascript - IDispatch::Invoke _NewEnum 在 JScript 数组上无法在 IE9 中工作

javascript - 如何将 Google Maps API 调用内部的数据设置为变量?

JavaScript 图表 : How to hide the data

excel - 如何使用 Selenium VBA 获取 innerHTML

java - 查找 Selenium 的 Web 元素

java - 需要针对我的自动化脚本中的每个步骤合并开始时间和结束时间

java - 数组列表最后索引值检查

java - 在 selenium 中创建页面对象模块时出错 对于示例测试测试用例

java - 如何双击 Selenium webdriver 中的 webElements 列表