回帰テスト スクリプトで Java と Selenium Webdriver を使用しました。テスト アクティビティを実行するために FirefoxDriver オブジェクトを選択しました。問題は次のとおりです。スクリプトによって開かれたウィンドウがフォーカスされていない場合 (たとえば、手動で別のプログラムに切り替えた場合)、動的に生成されたメニューの項目が見つかりません。コードは次のとおりです。
WebElement locationField = wd.findElement(By.xpath("//input[@id='service_location']"));
locationField.click();
wd.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
List<WebElement> countriesList = wd.findElements(By.xpath("//ul[@id='ui-id-1']/li/a"));
int randomCountryInt = (int) (Math.random() * countriesList.size());
WebElement country = countriesList.get(randomCountryInt); //IndexOutOfBoundsException exception is thrown
country.click();
「locationField」フィールドをクリックすると、メニュー (私のスクリプトでは「countriesList」) が生成されます。開いているウィンドウを最小化したり、別のプログラムに切り替えたりしなければ、スクリプトは正常に実行されます。