当有人使用 selenium 的 JavascriptExecutor
对象在网页中插入一些 javascript 并执行它时,这段 javascript 代码去了哪里以及它如何运行?
我的意思是它是永远驻留在页面中(直到页面重新加载)还是从外部执行。如果它位于页面中,是否可以再次使用该代码?
此外,如果其他一些 javascript 代码已经在页面中运行,那么会发生什么情况,插入的代码是等待其他 js 代码停止还是从浏览器外部并行执行。
我问这个问题是因为我正在研究 selenium 并使用 JavaScriptExecutor
。所以我只想知道它的内部运作方式。
最佳答案
在查看了 JavascriptExecutor
的所有 API 和文档之后,这就是我的发现。
它有两个方法,即executeScript
和executeAsyncScript
。第一种方法是同步的,因此如果页面上已经运行任何其他方法,则注入(inject)的脚本可能会等待该脚本完成。
另一个方法执行任何异步脚本(如 ajax 调用或 settimeout 函数),因此注入(inject)的脚本不必等待。
此外,插入的脚本作为匿名函数的主体执行。局部变量在脚本完成后消失,但全局变量保留在页面中,并可能在脚本完成后重新使用。
如果有人对此有更多信息,请提供。谢谢。
关于javascript - JavascriptExecutor 在 selenium webdriver 中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669776/