Seleniumで複雑なJavaScriptインターフェースをテストしようとしています(Pythonインターフェースを使用して、複数のブラウザー間で)。次の形式のボタンがいくつかあります。
<div>My Button</div>
「My Button」(または「my button」や「button」などの大文字と小文字を区別しない部分一致)に基づいてボタンを検索できるようにしたい
私はこれが驚くほど難しいことに気づき、明らかな何かを見逃しているように感じます。私がこれまでに持っている最高のものは:
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を使用すると、非常に遅くなります。
アイデア?
編集:この質問は少し漠然と出てきました。より具体的なバージョンをここで尋ねました(そして答えました):子要素のテキストを含めずに、(Python APIを介して)Selenium WebDriverで要素のテキストを取得する方法は?