Selenium で複雑な JavaScript インターフェイスをテストしようとしています (Python インターフェイスを使用し、複数のブラウザー間で)。次の形式のボタンがいくつかあります。
<div>My Button</div>
「マイ ボタン」(または「マイ ボタン」や「ボタン」などの大文字と小文字を区別しない部分一致) に基づいてボタンを検索できるようにしたいと考えています。
明らかな何かが欠けているように感じるほど、これは驚くほど難しいと思います。私がこれまでに持っている最高のものは次のとおりです。
driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]')
ただし、これは大文字と小文字が区別されます。私が試したもう 1 つのことは、ページ上のすべての div を繰り返し処理し、element.text プロパティをチェックすることです。ただし、次のような状況になるたびに:
<div class="outer"><div class="inner">My Button</div></div>
div.outer にもテキストとして「My Button」があります。それを修正するために、div.outer が div.inner の親であるかどうかを調べてみましたが、その方法がわかりませんでした (element.get_element_by_xpath('..') は要素の親を返しますが、 div.outer と等しくないことをテストします)。
また、少なくとも Chrome Webdriver を使用すると、ページ上のすべての要素を反復処理するのが非常に遅いようです。
アイデア?
ここでより具体的なバージョンを尋ねました(そして答えました):子要素のテキストを含めずに、Selenium WebDriverで要素のテキストを取得する方法は?