web-dev-qa-db-ja.com

Selenium ChromeDriverを使用して右クリックを実行するにはどうすればよいですか?

私はこれをたくさん探してきましたが、Pythonの答えを見つけることができませんでした。

右クリックをシミュレートしたり、Selenium/chromedriverを介してコンテキストメニューを開いたりすることは可能ですか?

Javaや他のいくつかの言語のオプションを見たことがありますが、Pythonでは見たことがありません。リンクまたは画像の右クリックをシミュレートするにはどうすればよいですか?

12
CamIce

それは呼ばれています context_click in Selenium.webdriver.common.action_chains 。 Seleniumはブラウザレベルのコンテキストメニューについては何もできないので、リンクがHTMLコンテキストメニューをポップアップすると思います。

from Selenium import webdriver
from Selenium.webdriver import ActionChains

driver = webdriver.Chrome()
actionChains = ActionChains(driver)

actionChains.context_click(your_link).perform()
10
Yi Zeng

同じ問題が発生し、右クリックして[新しいタブでリンクを開く]をクリックする必要がありました。私はグーグルでたくさんの答えを探しましたが、Pythonのために見つけた特定の解決策はありませんでした。以前、右クリックメニューが表示されている「ActionChains」を使用していましたが、OSレベルのアクセス権があると言っているスレッドがいくつか見つかったため、Seleniumではそのメニューリストにアクセスできません。

action = ActionChains(driver)action.context_click()。send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform()

ここでは、Keys.ARROW_DOWNが機能しておらず、同じタブでリンクを開いています。理想的には、新しいタブで開く必要があります。だから、私がこれをした2つの方法があります:

  1. link = driver.find_elements_by_xpath( "// a [contains(@ href、 'https:...')]")

    link.send_keys(Keys.CONTROL + Keys.ENTER)

  2. Javascriptを介して..

    driver.execute_script( "window.open(arguments [0]、 '_ blank');"、link)

Seleniumは範囲外であるため、右クリックメニュー項目にアクセスできないと思います。

0
Prat9501