1

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

4

3 に答える 3