前提・実現したいこと
selenium(headless chrome)で画像を取得するデモンストレーションを行っています。
対象のimg要素はfind_elementで取得できそうになかったので右クリックのコンテキストメニューから
”画像を新しいタブで開く(I)”を選択することができないか検討しています。
いろいろ方法を検索した結果、以下の様に書く方法にたどり着きましたが選択前ページから動いていないようです。
コンテクストメニューを選択する方法はないでしょうか。
該当のソースコード
ruby
1#selenium起動 2options = Selenium::WebDriver::Chrome::Options.new 3options.add_argument('--headless') 4driver = Selenium::WebDriver.for :chrome, options: options 5 6#該当ページへ移動 7driver.navigate.to 'http://sample.com/' 8 9#マウスを画像の座標へ移動(座標の値は例) 10driver.action.move_to_location(100, 100).perform() 11 12#右クリックでコンテキストメニューを表示、”画像を新しいタブで開く(I)”を選択 13driver.action.context_click().send_keys("I").send_keys(:enter).perform()
試したこと
ruby
1#右クリックでコンテキストメニューを表示、”画像を新しいタブで開く(I)”を選択 2driver.action.context_click().send_keys("I").send_keys(:enter).perform()
の代わりに
ruby
1driver.action.send_keys(:arrow_down).send_keys(:arrow_down).send_keys(:arrow_down).send_keys(:arrow_down).send_keys(:arrow_down).send_keys(:enter).perform()
のように矢印キーの入力も試しましたがページが下にスクロールするだけで別タブで画像を開けませんでした。
また、座標をclick().perform()すると画像のリンク先を得られたので座標の間違いはないと思われます。
補足情報
AWSのクラウドを用いているので結果確認はスクリーンショットとタブのカウントで行いました。
〇取得しようとしていた画像
取得しようとしていた要素はGoogle検索の画像タブで表示される画像一覧の要素です。
一覧の画像をクリックすると画面右に出る大きな画像を取得しようとしていました。
class名 irc_miのimg要素です。
実際のコードではclick()で右の黒帯を表示するところまでは動作します...
回答2件
あなたの回答
tips
プレビュー