Как щелкнуть правой кнопкой мыши в селене и сохранить изображение как в python - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь щелкнуть правой кнопкой мыши и нажать Сохранить как изображение в Селен Python.Мне удалось выполнить щелчок правой кнопкой мыши с помощью следующего метода, однако следующее действие по щелчку правой кнопкой мыши больше не работает.Как я могу решить эту проблему?

from selenium.webdriver import ActionChains 
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
driver.get(url)

    # get the image source
img = driver.find_element_by_xpath('//img')
actionChains = ActionChains(driver)
actionChains.context_click(img).send_keys(Keys.ARROW_DOWN).send_keys(Keys.ARROW_DOWN).send_keys(Keys.RETURN).perform()

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018
You have to first move to the element where you want to perform the context click
from selenium.webdriver import ActionChains 
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
driver.get(url)

    # get the image source
img = driver.find_element_by_xpath('//img')
actionChains = ActionChains(driver)
actionChains.move_to_element(img).context_click().send_keys(Keys.ARROW_DOWN).send_keys(Keys.ARROW_DOWN).send_keys(Keys.RETURN).perform()
0 голосов
/ 19 апреля 2019

Проблема в том, что метод send_keys () после создания контекстного меню отправляет ключи в окно, а не в меню.Таким образом, нет доступа к элементам меню.

У меня была похожая проблема с загрузкой холста, созданного на веб-странице.Наконец, я смог загрузить изображение, используя javascript.Я создал элемент загрузки для управления изображением.Поскольку это был холст, мне раньше приходилось выполнять метод toDataURL.Вот мой код Python:

script_js = 'var dataURL = document.getElementsByClassName("_cx6")[0].toDataURL("image/png");' \
    'var link = document.createElement("a"); ' \
    'link.download = "{}_{}";' \
    'link.href = dataURL;' \
    'document.body.appendChild(link);' \
    'link.click();' \
    'document.body.removeChild(link);' \
    'delete link;'.format( n, prefijo_nombre_archivo, sufijo_nombre_archivo )
driver.execute_script(script_js)

Я надеюсь, что это может помочь!

0 голосов
/ 23 ноября 2018

Вы можете сделать ту же функциональность, используя pyautogui.Предполагая, что вы используете Windows.-> pyautogui.position () (187, 567) # печатает текущую позицию курсора

-> pyautogui.moveTo (100, 200) # переместить в место, где требуется щелчок правой кнопкой мыши.

-> pyautogui.click (button = 'right')

-> pyautogui.hotkey ('ctrl', 'c') - Ctrl + C на клавиатуре (сочетание клавиш)

Для получения дополнительной информации см. Ссылку ниже https://pyautogui.readthedocs.io/en/latest/keyboard.html

...