栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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:UserswillDesktop图片1.png")
# 选择组件句柄classnameNN,单击打开
autoit.control_click(title="打开",control="Button1")
sleep(5)
print("上传成功")
driver.quit()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876138.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号