当某人使用selenium的JavascriptExecutor
对象在网页中插入一些javascript并执行它时,这个javascript代码在哪里运行?它是如何运行的?
我的意思是它永远位于页面中(直到重新加载页面)或者从外部执行。如果它位于页面中,是否可以再次使用该代码?
此外,如果其他一些javascript代码已在页面中运行,那么会发生什么,插入的代码会等待其他js代码停止或从浏览器外部并行执行。
我问了这个问题,因为我正在研究硒并使用JavaScriptExecutor
。所以我只想知道它的内部工作原理。
答案 0 :(得分:1)
在查看JavascriptExecutor
的所有API和文档之后,这就是我找到的。
它有两种方法,即executeScript
和executeAsyncScript
。第一种方法是同步的,所以如果页面上已经运行了任何其他方法,那么注入的脚本可能会等待该脚本完成。
另一个方法执行任何异步脚本(如ajax调用或settimeout函数),因此注入的脚本不必等待。
插入的脚本也作为匿名函数的主体执行。脚本完成后局部变量会变暗,但全局变量会保留在页面中,并且可能在脚本完成后重复使用。
如果有人有更多相关信息,请提供。谢谢。