因为在自学过程中呢,遇到了selenium右键不管用的问题,所以找了很多办法,我把我的方法列出来你你们也可以试一下。
1、在Selenium中,有一个ActionChains模块支持,右键,鼠标悬停,拖拽,双击等动作。
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
time.sleep(2)
element = driver.find_element_by_xpath("//*[@id='lg']/img")
actionChains = ActionChains(driver)
actionChains.context_click(element).send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform()
可惜我的第一种方法不成功。再来尝试其他办法,下面的办法我就不贴了,基本上跟第一种的差不多
2.既然send_keys方法不行,那我接着找到了key_down和key_up的方法,按下某个键后再释放,达到相同的目的,实践后还是不行,
3.既然上面的都不行,后来我又找到了move_by_offset方法,可惜还是不行,要绝望了。主要代码如下:
driver = webdriver.Chrome()
#鼠标移动到指定左边
ActionChains(driver).move_by_offset(x1,0).perform()
ActionChains(driver).move_by_offset(x2,0).perform()
ActionChains(driver).click()
4.但是后来我又找到了 win32api/win32con这两个类,完美解决了困扰我很长时间的问题,当然要下载 。 在cmd 里面 运行这行代码 pip install pypiwin32,如果不行的话那你就网上找资源去吧,下面附代码:
#win32con自带键位表
#win32api.keybd_event(40,0,0,0)
#表示键盘方向键的下,后面附键位表
action = ActionChains(driver)
action.context_click(aa).perform()
time.sleep(1)
win32api.keybd_event(40,win32con.KEYEVENTF_KEYUP,0)#移动到菜单
win32api.keybd_event(13,win32con.KEYEVENTF_KEYUP,0)#然后enter按下