webdriver处理鼠标右键菜单栏
selenium中ActionChains类提供了鼠标操作的常用方法,但对于鼠标右键的菜单栏,无论是send_keys(Keys.ARROW_DOWN)还是send_keys("K")(注:前者是模拟键盘上的方向键,后者是通过字母以快捷方式打开)都显得无能为力
一个比较典型的例子是百度图片另存为:想要在百度图片里选择一张"笔记本电脑"的图片并另存为,上面两种方法都是做不到的

多次百度之后,发现有一篇文章解决了这个问题——《WebDriver如何处理右键菜单》,文中提到win32api和win32con可以做这个事情,第一步是先引入:
import win32api import win32con
引入之后,如果我们要对按键进行操作,就要模拟一次按下和释放的过程,比如现在要按下键盘上的字母V键,由于V在ASCII码表中的键码是86,可以写成以下形式
win32api.keybd_event(86,0,0,0) #字母V的键码是86 win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) #按下后再释放
附上键位的ASCII码表

完整的访问百度图片,选择图片另存为的代码如下
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys #需要引入keys包
import time
import win32api
import win32con
#初始化chromedriver
driver = webdriver.Chrome()
#打开百度首页
driver.get("http://www.baidu.com")
#浏览器窗口最大化
driver.maximize_window()
#等待2s
time.sleep(2)
#定位到百度首页的更多产品
more_xpath = "//a[@name='tj_briicon']"
more_element = driver.find_element_by_xpath(more_xpath)
#鼠标悬浮
ActionChains(driver).move_to_element(more_element).perform()
time.sleep(2)
#点击图片
img_element = driver.find_element_by_xpath("//a[@name='tj_img']").click()
time.sleep(2)
#定位百度图片输入框,并输入内容"笔记本电脑"
input_element = driver.find_element_by_id("kw")
input_element.send_keys("笔记本电脑")
#等待2s
time.sleep(2)
#回车
input_element.send_keys(Keys.ENTER)
time.sleep(2)
#定位到要右击的元素
pc_img_element = driver.find_element_by_xpath("//a[@name='pn1']")
#右键,打开右键菜单栏
ActionChains(driver).context_click(pc_img_element).perform()
time.sleep(2)
#点击V图片另存为:
#1. 按下键盘上的V键
win32api.keybd_event(86, 0, 0, 0)
#2. 释放键盘上的V键
win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
参考文章
http://blog.sina.com.cn/s/blog_5042ea610102w928.html
webdriver处理鼠标右键菜单栏的更多相关文章
- 将sublimeText添加到鼠标右键菜单栏
将sublimeText添加到鼠标右键菜单栏主要是写一个注册表的文件,将这个注进去,首先你需要清楚你的sublimeText软件的安装路径,然后改一下下面这段代码就可以了 Windows Regist ...
- Python_Selenium之鼠标右键
Python_Selenium之鼠标右键 一.步骤: (以百度为例)获取百度网址 找到需要右键的元素(定位),xpath表达式为“//*[@id='lg']/img” 然后,右键选择“在新标签页中打开 ...
- Selenium_Selenium WebDriver 中鼠标和键盘事件分析及扩展
在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 W ...
- Selenium WebDriver 中鼠标和键盘事件分析及扩展(转)
本文将总结 Selenium WebDriver 中的一些鼠标和键盘事件的使用,以及组合键的使用,并且将介绍 WebDriver 中没有实现的键盘事件(Keys 枚举中没有列举的按键)的扩展.举例说明 ...
- Selenium WebDriver 中鼠标和键盘事件分析及扩展[转载]
原文:http://www.ibm.com/developerworks/cn/java/j-lo-keyboard/ 概念 在使用 Selenium WebDriver 做自动化测试的时候,会经常模 ...
- Selenium WebDriver中鼠标事件
鼠标点击操作 鼠标点击事件有以下几种类型: 清单 1. 鼠标左键点击 Actions action = new Actions(driver);action.click();// 鼠标左键在当 ...
- 如何屏蔽ctrl + v 粘贴事件,鼠标右键粘贴事件
通常在自己的APP里的密码框,验证码框需要屏蔽复制,粘贴,怎么办呢? 有三种方法: 1 hook 此方法是最完全的,但由于hook是全局的,容易影响到其它代码. 2 子类化文本框, 重写OnPaste ...
- Selenium WebDriver 中鼠标和键盘事件分析及扩展
[From] http://www.51testing.com/html/18/631118-861557.html 在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和 ...
- webdriver高级应用- 右键另存为下载文件
1.要使用右键另存,需要先按照第三方工具AutoIt: 链接: https://pan.baidu.com/s/12aBBhOOTmyQpH9hukt0XGA 密码: fcdk 2.创建一个名为loa ...
随机推荐
- django注册在使用hashlib对密码加密时报Unicode-objects must be encoded before hashing
在使用sh1等hashlib方法进行加密时报:Unicode-objects must be encoded before hashing 解决办法:对要加密的字符串指定编码格式 解决之前: s1=s ...
- Windows Server 2012 下安装MySQL 5.6 X64位包
WIN下的MySQL 5.6非MSI安装 查阅了官网一下,比较靠前的版本,都很少提供MSI 64位的版本,只有32位的版本,但是服务器上跑的自然是64位的系统为佳,在官网下了免编译的WIN 环境包,过 ...
- jQuery中删除节点方法remove()、detach()、empty()分析
jQuery中提供了三种删除节点的方法:remove().detach().empty(),本文详细分析这三种方法. 最容易区分的是empty(),该方法严格上属于“清空节点”,即删除其子节点,自身并 ...
- .net全部版本的官方下载地址
https://technet.microsoft.com/zh-cn/5a4x27ek
- Python2 socket 多线程并发 ThreadingTCPServer Demo
# -*- coding:utf-8 -*- from SocketServer import TCPServer, StreamRequestHandler import traceback cla ...
- arm64的适配问题,这次真醉了
写过tableView的童鞋都知道,有必须的两个代理方法要实现,还有几个选择实现的. 必须实现的代理方法: ~设置行数 - (NSInteger)tableView:(UITableView *)ta ...
- swift的值类型和引用类型
前言 最近在学设计模式中,发现 Swift 中的 struct,class 以及 enum 在一般的使用中能够做到互相替换,因此探究其背后的逻辑就十分有必要.而这一问题又引出了 Swift 中的值类型 ...
- Linux doxygen的安装与使用
1.安装doxygen 目前最新版本的的doxygen是doxygen1.8.13,安装包可以在官网上下载,网址是:http://www.stack.nl/~dimitri/doxygen/downl ...
- JS字符串数组转换
字符串转数组: str.split(';') 数组转字符串: arr.join(';')
- IDEA中集成JRebel插件
下载下面2个插件 jr-ide-intellij-6.4.3_13-16.zip --- 官网的jar(地址:https://plugins.jetbrains.com/plugin/4441-jre ...