JavascriptExecutor 如何在 selenium webdriver 中工作
Posted
技术标签:
【中文标题】JavascriptExecutor 如何在 selenium webdriver 中工作【英文标题】:How does JavascriptExecutor works in selenium webdriver 【发布时间】:2013-10-29 21:44:13 【问题描述】:当有人使用 selenium 的 javascriptExecutor
对象在网页中插入一些 javascript 并执行它时,这段 javascript 代码在哪里以及它是如何运行的?
我的意思是它是永远位于页面中(直到重新加载页面)还是从外部执行。如果它位于页面中,是否可以再次使用该代码?
另外,如果页面中已经运行了其他一些 javascript 代码,那么会发生什么情况,插入的代码是等待其他 js 代码停止还是从浏览器外部并行执行。
我问这个问题是因为我正在研究 selenium 并使用JavaScriptExecutor
。所以我只是想知道它在内部是如何运作的。
【问题讨论】:
【参考方案1】:在查看了JavascriptExecutor
的所有 API 和文档后,我发现了这一点。
它有两种方法,即executeScript
和executeAsyncScript
。第一种方法是同步的,所以如果页面上已经运行了其他方法,那么注入的脚本可能会等待该脚本完成。
另一种方法执行任何异步脚本(如 ajax 调用或 settimeout 函数),因此注入的脚本不必等待。
插入的脚本也作为匿名函数的主体执行。脚本完成后局部变量会变小,但全局变量会留在页面中,并且可能在脚本完成后可以重复使用。
如果有人对此有更多信息,请提供。谢谢。
【讨论】:
以上是关于JavascriptExecutor 如何在 selenium webdriver 中工作的主要内容,如果未能解决你的问题,请参考以下文章
Selenium JavascriptExecutor 详解
使用 JavascriptExecutor 发送密钥并点击网页元素
JavascriptExecutor(Selenium WebDriver C#)不断返回空对象