如何在Selenium中右键单击并单击保存Image as in Python

vsmadaxz  于 2023-05-21  发布在  Python
关注(0)|答案(3)|浏览(157)

我试图用鼠标右键单击并单击在selenium python中保存为图像。我能够执行右键单击与follwing方法,但下一个行动,以执行右键单击不工作了。我该如何解决这个问题?

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()
rt4zxlrg

rt4zxlrg1#

问题是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)

我希望它可以帮助!

k10s72fa

k10s72fa2#

你可以使用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的更多信息,请参阅以下链接

jgzswidk

jgzswidk3#

您必须首先移动到要执行上下文单击的元素

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()

相关问题