您的位置:首页 > 编程语言 > Python开发

Python+selenium右键菜单不管用的解决办法

2017-11-06 15:55 423 查看
因为在自学过程中呢,遇到了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按下


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: