Как выполнить правый щелчок с помощью 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 не работает и открывает ссылку в той же вкладке, в идеале она должна открываться в новой вкладке.
Итак, есть два способа сделать это:
link = driver.find_elements_by_xpath ("//a [содержит (@href, 'https:...')]")
link.send_keys (Keys.CONTROL + Keys.ENTER)
Через 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()