Как выполнить правый щелчок с помощью Selenium ChromeDriver?

Я много искал, но не смог найти ответ для Python.

Можно ли имитировать щелчок правой кнопкой мыши или открыть контекстное меню через селен/хромированный реверс?

Я видел варианты для Java и некоторых других языков, но никогда в Python. Что мне нужно сделать, чтобы имитировать правый щелчок по ссылке или картинке?

Ответ 1

Он называется context_click в 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()

Ответ 2

Я столкнулся с той же проблемой, где я должен был щелкнуть правой кнопкой мыши и нажать "открыть ссылку в новой вкладке". Я искал много ответов на Google, но не было никакого конкретного решения, которое я нашел для Python. Ранее я использовал "ActionChains", где отображается меню правой кнопки мыши, но затем к этому списку меню нельзя было перейти в селене, поскольку я обнаружил, что некоторые потоки говорят, что у него есть доступ на уровне ОС.

action = ActionChains (драйвер) action.context_click(). send_keys (Keys.ARROW_DOWN).send_keys (Keys.ENTER).perform()

Здесь Keys.ARROW_DOWN не работает и открывает ссылку в той же вкладке, в идеале она должна открываться в новой вкладке. Итак, есть два способа сделать это:

  1. link = driver.find_elements_by_xpath ("//a [содержит (@href, 'https:...')]")

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

  2. Через JavaScript.

    driver.execute_script ("window.open(arguments [0], '_blank');", ссылка)

Что я думаю, вы не можете получить доступ к пунктам меню правой кнопкой мыши в селене, поскольку это выходит за рамки.

Ответ 3

Вы можете выполнить контекстное нажатие с помощью ActionChains и использовать Arrows через send_keys для выбора элемента из контекстного меню.

ActionChains(context.browser).move_to_element(element).context_click(element).perform()
ActionChains(context.browser).send_keys(Keys.ARROW_UP).perform()
ActionChains(context.browser).send_keys(Keys.ENTER).perform()