Seleniumを使用してtag_nameで最も近い親を見つける方法
概要
selenium-webdriver を使用して「テーブル スタイル」Web サイトを操作しています。
テーブルのネストが多数あり、それらには id 属性や name 属性がありません。
そこで、テーブル内のヘッダー テキストを取得して、このようなデータの場所を見つけることにしました。
driver = Selenimum::WebDriver.for :firefox
element = driver.find_element(:xpath,
"//font[@color='#FFFFFF' and text()='some probably unique text']")
このようなHTMLから。
<table><tbody>
...
<table><tbody><tr><td><font color="#FFFFFF">
some probably unique text
</font></td></tr></table>
...
</tbody></table>
上記のコードで取得したfont要素から内部のtable要素を取得したいと考えています。 element.find_element(:xpath, “../../../..”) で取得できることはわかっていますが、少し嫌です。
せめてこのelement.find_element(:xpath, “../*/table”)のようなタグ名を指定したいです。
これを行う方法はありますか?
解決策
XPath 軸の祖先を使用できます。
element = driver.find_element(:xpath, ".//font[@color='#FFFFFF' and text()='some probably unique text']/ancestor::table")
またはネストされた XPath: あなたのようなネストされたテーブルの状況ではありません
element = driver.find_element(:xpath, ".//table[.//font[@color='#FFFFFF' and text()='some probably unique text']]")