0


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

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

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

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

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

  1. import autoit# 识别窗体组件的库,注意导入的不是pyautoit
  2. from time import sleep
  3. from selenium import webdriver
  4. from selenium.webdriver.common.by import By
  5. from selenium.webdriver.support.wait import WebDriverWait
  6. from selenium.webdriver.common.action_chains import ActionChains
  7. # 初始化
  8. driver = webdriver.Chrome()#这里如果webdriver驱动没有放在sys.path列表中,就括号加入绝对路径
  9. driver.implicitly_wait(5)
  10. driver.get("http://www.baidu.com")
  11. # 单击相机图标
  12. driver.find_element(By.CSS_SELECTOR,".soutu-btn").click()
  13. 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'))#用了个隐匿函数
  14. # 这里要用鼠标的单击才可以
  15. action=ActionChains(driver=driver)
  16. action.click(on_element=ele_up)
  17. action.perform()
  18. sleep(2)

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

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

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

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

autoit.win_activate

  1. 激活指定的窗口

autoit.win_close

  1. 关闭指定窗口

autoit.win_exists

  1. 检查指定的窗口是否存在

autoit.win_get_pos

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

autoit.win_get_process

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

autoit.win_get_text

  1. 获取指定窗口中的文本

autoit.win_kill

  1. 强行关闭指定窗口

autoit.win_move

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

autoit.win_set_state

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

autoit.win_wait

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

autoit.win_wait_active

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

autoit.win_wait_close

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

autoit.win_wait_not_active

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

autoit.control_click

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

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

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

还没有评论