問題
要素をクリックしようとした時、次のエラーが出ることがある。
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="hotelResultTitle"]/h1"}
理由
理由としてはまさに、遅延ロードなどのことで、ライブラリがアクセスした時点では該当する要素がまだページにロードされてないからだ。
解決
webDriverにはTimeoutを設定しておき、すぐに諦めるのをやめらせる。
@BeforeMethod public void setUp() { driver = DriverFactory.openWebDriver(browserType); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // ここ。 driver.get("https://www.expedia.com/"); }
もう一回実行すれば
PASSED: hotelReservationTest =============================================== Default test Tests run: 1, Failures: 0, Skips: 0 =============================================== =============================================== Default suite Total tests run: 1, Failures: 0, Skips: 0 ===============================================