0


python+selenium+autoit实现自动百度识图

前言:分享一个web测试用的浏览器自动上传文件的案例,目标网站,百度识图

1、准备软件和库:python IDE,autoit-v3版本,PyAutoIt库,selenium库,这些怎么准备就不写了;

2、先打开百度首页,点相机图标和选择文件,就会弹出Windows窗口,选择要上传的图片,打开即可上传。所以思路就是,a--selenium操作浏览器,点开窗口;b--autoit获取窗口信息(标题,【文件名】组件和【打开】组件);c--autoit库+python输入数据,单击。

3、写selenium代码,很简单,就不细说了

import autoit# 识别窗体组件的库,注意导入的不是pyautoit
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
# 初始化
driver = webdriver.Chrome()#这里如果webdriver驱动没有放在sys.path列表中,就括号加入绝对路径
driver.implicitly_wait(5)
driver.get("http://www.baidu.com")
# 单击相机图标
driver.find_element(By.CSS_SELECTOR,".soutu-btn").click()
ele_up=WebDriverWait(driver=driver,timeout=5,poll_frequency=0.5).until(lambda x:x.find_element(By.XPATH,'//*[@id="form"]/div/div[2]/div[2]/input'))#用了个隐匿函数
# 这里要用鼠标的单击才可以
action=ActionChains(driver=driver)
action.click(on_element=ele_up)
action.perform()
sleep(2)

4、上面搞定了,弹窗也可以唤出来了,下面抓窗口的标题,组件的句柄名。运行autoit-window-info软件,拖动瞄准镜到弹出的窗口,记住关键信息,图1和图2

5、信息拿到了就可以写代码了。

# 使用autoit操作窗口,等待3秒,直到指定窗口被激活
autoit.win_wait_active(title="打开",timeout=3)#传入窗口标题和等待时间
# 选择组件句柄名ClassnameNN,输入路径文本
autoit.control_send(title="打开",control="Edit1",send_text=r"C:\Users\你自己用户名\Desktop\图片1.png")#跟目标图片的绝对路径
# 选择组件句柄classnameNN,单击打开
autoit.control_click(title="打开",control="Button1")
sleep(5)
print("上传成功")
driver.quit()

6、扩展,其他的autoit的方法

autoit.win_activate

激活指定的窗口

autoit.win_close

关闭指定窗口

autoit.win_exists

检查指定的窗口是否存在

autoit.win_get_pos

获取指定窗口的坐标位置和大小等属性(left, top, right, bottom)

autoit.win_get_process

获取指定窗口关联的进程ID

autoit.win_get_text

获取指定窗口中的文本

autoit.win_kill

强行关闭指定窗口

autoit.win_move

移动指定的窗口或调整窗口的大小(PID/0) 参数(x, y, width, height)

autoit.win_set_state

显示,隐藏,最小化,最大化或还原一个窗口 参数(flag 1= 显示2 = 最小化/隐藏3 = 最大化4 = 还原)

autoit.win_wait

暂停脚本的执行直至指定窗口存在(出现)为止(1/0) 参数(timeout 单位为秒)

autoit.win_wait_active

暂停脚本的执行直至指定窗口被激活(成为活动状态)为止 参数(timeout 单位为秒)

autoit.win_wait_close

暂停脚本的执行直至所指定窗口不再存在为止 参数(timeout 单位为秒)

autoit.win_wait_not_active

暂停脚本的执行直至指定窗口不是激活状态为止 参数(timeout 单位为秒)

autoit.control_click

向指定控件发送鼠标点击命令 参数(timeout control 控件)
7、完整示例代码
import autoit# 识别窗体组件的库,注意导入的不是pyautoit
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
# 初始化
driver = webdriver.Chrome()#这里如果webdriver驱动没有放在sys.path列表中,就括号加入绝对路径
driver.implicitly_wait(5)
driver.get("http://www.baidu.com")
# 单击相机图标
driver.find_element(By.CSS_SELECTOR,".soutu-btn").click()
ele_up=WebDriverWait(driver=driver,timeout=5,poll_frequency=0.5).until(lambda x:x.find_element(By.XPATH,'//*[@id="form"]/div/div[2]/div[2]/input'))
# 这里要用鼠标的单击才可以
action=ActionChains(driver=driver)
action.click(on_element=ele_up)
action.perform()
sleep(2)
# 使用autoit操作窗口,等待3秒,直到指定窗口被激活
autoit.win_wait_active(title="打开",timeout=3)#传入窗口标题和等待时间
# 选择组件句柄名ClassnameNN,输入路径文本
autoit.control_send(title="打开",control="Edit1",send_text=r"C:\Users\will\Desktop\图片1.png")
# 选择组件句柄classnameNN,单击打开
autoit.control_click(title="打开",control="Button1")
sleep(5)
print("上传成功")
driver.quit()

本文转载自: https://blog.csdn.net/qq_41828522/article/details/124736598
版权归原作者 挥衣拂尘 所有, 如有侵权,请联系我们删除。

“python+selenium+autoit实现自动百度识图”的评论:

还没有评论