梦里寻她千百度,蓦然回首,那人却在灯火阑珊处... ----By Altumn
写在前面
日常的UI自动化测试中,有时候会用到复制粘贴功能。
按照以往的操作方法,可能第一时间想到模拟键盘输入“Ctrl C”和“Ctrl V”。
在此之前也写过一篇包含此功能的文章:Selenium键盘操作事件
但是针对一些需要通过赋值实现复制粘贴功能的情景,存粹的模拟键盘输入就无法实现想要的效果了。
python提供了第三方库pywin32,该库中包含剪贴板win32clipboard模块,结合selenium可以实现日常UI自动化测试中的一些功能。
本文的主要内容是:
如何在Windows下利用python的第三方库实现复制粘贴功能。
安装pywin32
在python环境配置完好的情况下,并且已经安装了python的包管理工具pip。
可以直接通过命令pip install pywin32进行在线安装。
如下图所示:
安装成功,如下所示:
如果输入命令pip install pywin32无法正常安装并且提示以下内容:
代码语言:javascript复制You should consider upgrading via the ' python -m pip install --upgrade pip' command.
则需要在cmd命令行通过以下命令升级pip工具:
代码语言:javascript复制python -m pip install --upgrade pip
升级完成后,重新打开CMD命令行输入pip install pywin32进行在线安装pywin32。
win32clipboard的应用
pywin32安装完成以后,可以直接通过import命令导入包win32clipboard。
在此结合Selenium做以下操作应用:
1.打开网址www.testclass.cn首页;
2.定义参数并且赋值到复制粘贴板win32clipboard;
3.读取粘贴板win32clipboard中的内容;
4.在搜索框通过模拟键盘功能粘贴到文本框;
5.通过模拟键盘功能查询内容。
详细操作代码如下所示:
代码语言:javascript复制#clipboard.py
#www.testclass.cn
#Altumn
import time
import win32clipboard
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver=webdriver.Firefox()
driver.get("https://www.testclass.cn/")
driver.implicitly_wait(10)
driver.maximize_window()
#设置复制内容Text
Text="selenium"
#打开粘贴板
win32clipboard.OpenClipboard()
#清空粘贴板
win32clipboard.EmptyClipboard()
#设置复制的内容为Text
win32clipboard.SetClipboardData(win32clipboard.CF_UNICODETEXT,Text)
#关闭粘贴板线程
win32clipboard.CloseClipboard()
#打开粘贴板
win32clipboard.OpenClipboard()
#获取粘贴板内容,传给参数data
data=win32clipboard.GetClipboardData(win32clipboard.CF_TEXT)
#输出粘贴板内容
print(data)
#需要关闭一下粘贴板线程
win32clipboard.CloseClipboard()
driver.find_element_by_id("search").click()
#在网站主页输入Control v模拟粘贴,然后执行搜索操作。
driver.find_element_by_id('search').send_keys(Keys.CONTROL, 'v')
time.sleep(2)
#通过回车键来代替单击操作,实现查询。
driver.find_element_by_id("search").send_keys(Keys.ENTER)
time.sleep(2)
driver.quit()
最终执行效果如图所示(此效果图是至今日关于“selenium”主题相关的部分文章截图):