2013-10-29 49 views
4

當某人使用selenium的JavascriptExecutor對象在網頁中插入一些javascript並執行它時,此javascript代碼會在哪裏運行?它如何運行?JavascriptExecutor如何在selenium webdriver中工作

我的意思是它永遠坐在頁面中(直到頁面被重新加載)或者它從外部執行。如果它位於頁面中,是否可以再次使用該代碼?

另外,如果其他的javascript代碼已經在頁面中運行,那麼會發生什麼,插入的代碼是否等待其他js代碼停止或從瀏覽器外部並行執行。

我問這個問題,因爲我正在使用硒和使用JavaScriptExecutor。所以我只是想知道它的內部工作原理。

回答

1

查看所有API和文檔JavascriptExecutor後,這是我發現的。

它有兩種方法,即executeScriptexecuteAsyncScript。第一種方法是synschrous,所以如果任何其他已經在頁面上運行,那麼注入的腳本可能會等待該腳本完成。

另一種方法執行任何異步腳本(如ajax調用或settimeout函數),所以注入的腳本不必等待。

此外,插入的腳本作爲匿名函數的主體執行。腳本完成後局部變量變暗,但全局變量停留在頁面中,腳本結束後可能會重新使用。

如果有人有關於此的更多信息,請提供。謝謝。

相關問題