Seleniumを使用してGoogle翻訳Webインターフェイスを自動化しようとしています(ただし、この質問を理解するためにSeleniumを理解する必要はありません。要素を見つけてクリックすることを知ってください)。翻訳元の言語の選択に行き詰まっています。
下のスクリーンショットに示すように、ドロップダウン メニューが開くところまでたどり着けません。
ここで、「日本語」を選択します。
この xpath 式は機能します。$b.find_element(:xpath,"//*[@id=':13']/div").click
ただし、言語の名前を入力するだけでよいものを使用したいと思います。
この xpath 式も機能します。$b.find_element(:xpath,"//*[contains(text(),'Japanese')]").click
ただし、ページに他の「日本語」テキストがない場合に限ります。
そのため、xpath の範囲を絞り込もうとしていますが、「日本語」テキストを検索するために使用するパスを指定しようとすると、式が機能しなくなり、要素が見つかりません。$b.find_element(:xpath,"//*div[@id='gt-sl-gms']/*[contains(text(),'Japanese')]").click
また、元の xpath でも機能しなくなりました。$b.find_element(:xpath,"//*div[@id='gt-sl-gms']/*[@id=':13']/div").click
これは奇妙です。ドロップダウン メニューを表示するために、この xpath を使用するからです$b.find_element(:xpath,"//*[@id='gt-sl-gms']/*[contains(text(),'From:')]").click
。
したがって、式に 2 つのワイルドカードがあるわけでも、式が具体的すぎるわけでもありません。他にも欠けているものがありますが、それは本当に単純なことだと確信しています。
任意の提案をいただければ幸いです。
私が失敗した他のことを編集します:
$b.find_element(:xpath,"//*/div[@id='gt-sl-gms']/*[@id=':13']/div").click
$b.find_element(:xpath,"//*[@id='gt-sl-gms']/*[@id=':13']/div").click
$b.find_element(:xpath,"//*[@id='gt-sl-gms']//*[@id=':13']/div").click