Failure Sharing

Bootup your energy with sharing failure.

要素が存在してるにもかかわらず、NoSuchElementException

問題

要素をクリックしようとした時、次のエラーが出ることがある。

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
===============================================

コミット

github.com