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

因为在自学过程中呢,遇到了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按下

这里写图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值