Selenium-WebDriverNokogiriで同じファイルを開いても違うxpathを書かないといけないとダメで少しハマったのでメモ。

違いの原因

同じHTMLを解析してもSelenium-WebDriverChromeFirefoxで開いた時は任意の要素であるtbodyが挿入されるために違いが発生します。

実際の例

例えば

とある時に

Nokogiri の場合

Selenium WebDriver の場合

基本的な対策

大体の場合は//table//trとどちらにも対応できるように書いたらいいわけですが、汚いHTMLを解析するときに

//tr/td/font[contains(text(), 'Keyword')]/../../following-sibling::tr[3]/td

な感じで正確なタグの数が必要になることがあるのでそういう時に気をつけましょう。

参考

ruby – How to get element that have same parent and n th different position by xpath – Stack Overflow


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Post Navigation