这里演示一下使用pyautogui替代selenium进行web自动化测试,并不建议使用pyautogui进行web自动化测试,因为元素的ui一旦有长宽变化,或者风格的变化,执行时就会发生异常,仅当学习使用
以使用selenium打开百度,并在输入框输入“只宅不技术”,之后点击搜索为例
代码如下:
#coding=utf-8 from selenium import webdriver import time #打开火狐浏览器 driver=webdriver.Firefox() #打开百度 driver.get("https://www.baidu.com") time.sleep(2) #找到输入框输入 只宅不技术 driver.find_element_by_id("kw").send_keys(u'只宅不技术') #点击搜索框 driver.find_element_by_id("su").click()
若要使用pyautogui替代selenium,需要先进行截图,然后通过图像识别操作
首先需要利用截图工具进行截图,比如QQ就可以进行截图,需要截的图片有
1、火狐浏览器的图标,将其命名为firefox.png
2、输入url的地址框,将其命名为url.png
3、进行搜索的输入框,将其命名为kw.png
4、进行搜索的搜索按钮,将其命名为su.png
由于typewrite()函数无法输入中文,所以事先把“只宅不技术”复制到了粘贴板,输入时候粘贴一下就行,将截图与代码放置在同一路径下【需要注意,整个屏幕上只能有一个火狐的图标,不然会报错】
代码如下:
import pyautogui import time #定义图像识别双击事件 def mouseDoubleClick(image): x,y=pyautogui.locateCenterOnScreen(image) pyautogui.click(x,y,clicks=2,interval=0.2,duration=0.2,button='left') #定义单击事件 def mouseClick(image): x,y=pyautogui.locateCenterOnScreen(image) pyautogui.click(x,y,clicks=1,interval=0.2,duration=0.2,button='left') #双击火狐浏览器的图标 mouseDoubleClick(image='firefox.png') time.sleep(3) #双击浏览器的url地址框 mouseClick(image='url.png') #在地址框输入百度地址,然后回车 pyautogui.typewrite('www.baidu.com') pyautogui.keyDown('enter') pyautogui.keyUp('enter') time.sleep(2) #双击搜索框 mouseClick(image='kw.png') #将只宅不技术粘贴到搜索框 pyautogui.hotkey('ctrl','v') time.sleep(2) #点击搜索 mouseClick(image='su.png')