Seleniumの落とし穴

自動テストをSeleniumで書いていて要素をXpathで取得しようとした時に落とし穴にハマりました。

driver.findElement(
    By.xpath("//*[@id='book_list ']/div/div/table/tbody/tr[4]/td[1]/a"
    )
);

NoSuchElementErrorが出てしまいました。

何が問題なのかと考えていると…

なんとidの’book_list ‘の最後に空白が…

あまり意識していなかったのですがきちんと空白まで含めたidで検索していたそうです。

chromeのデベロッパーツールからXpathを取得していたので大丈夫だと過信していました。