1

これの違いは何ですか:

RemoteWebDriver driver = new FirefoxDriver();
Object result = driver.executeScript("somefunction();");

この:

RemoteWebDriver driver = new FirefoxDriver();
Selenium seleniumDriver = new WebDriverBackedSelenium(driver, driver.getCurrentUrl());
String result = seleniumDriver.getEval("somefunction();");

最初のコマンドが機能し、2 番目のコマンドが Firefox などをハングさせる例があります。これら2つの機能の違いを理解したいと思います。

4

2 に答える 2

4

提供されたスクリプト フラグメントは、無名関数の本体として実行されます。

 ((JavascriptExecutor)driver).executeScript("somefunction();");

ドキュメントに次のようなものを内部的に挿入します。

return function()
{ 
   somefunction(); 
}.call();

したがって、本質的に webdriver では、executeScript は同期的に実行され、ブロックされる可能性があります。

于 2012-07-26T07:08:06.443 に答える