selenium中处理Windows弹框时AutoIt脚本编写

在web页面中,可以使用selenium的定位方式来识别元素,从而来实现页面中的自动化,但对于页面中弹出的文件选择框,selenium就实现不了了,所以就需引用AutoIt工具来实现。

AutoIt的下载与安装就不再赘述,下载地址如下:https://www.autoitscript.com/site/autoit/downloads/

这是安装好的目录

接下来就用一个实例来讲解下AutoIt工具的具体使用,实例功能是:把百度首页中的百度图片另存为到本地

那就开始吧

1、首先定位图片然后鼠标右击 (要是觉得陌生,那要再回去看看selenium了)

action = driver.find_element_by_class_name("index-logo-src")
ActionChains(driver).context_click(action).perform()

2、用win32api选择相应菜单并点击

a = 0
while a < 7:
    win32api.keybd_event(40, 0, 0, 0)
    time.sleep(1)
    a += 1
win32api.keybd_event(13, 0, 0, 0)

上面代码的13与40按键对应的是回车与下键

运行到这一步后会弹出如下对话框,让输入文件名以及保存路径,该对话框已经是页面外的元素了,使用普通的定位时定不到了,所以就需要使用AutoIt工具来实现。

3、用AutoIt实现另存为操作

鼠标点中Finder Tool并拖动到输入文件名处,操作如下所示,得到下图结果

元素定位到了,接下来就是使用AutoIt工具包下的SciTE Script Editor写脚本,并保存为au3格式,根据定位到的参数值,写如下脚本:

ControlFocus("另存为","","Edit1")
WinWait("[CLASS:#32770]","",10)
ControlSetText("另存为","", "Edit1", "d:\Test\baidu.png")
Sleep(2000)
ControlClick("另存为","","Button2")

代码解释:

第一行:ControlFocus ( "title", "窗口文本", controlID) 设置输入焦点到指定窗口的某个控件上;

第二行:WinWait ( "title" , "窗口文本" , 超时时间 ) 暂停脚本的执行直至指定窗口存在(出现) 为止;

第三行:ControlSetText ( "title", "窗口文本", controlID, "新文本" ) 修改指定控件的文本;

第四行:Sleep ( 延迟 ) 使脚本暂停指定时间段;

第五行:ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 ) 向指定控件发送鼠标点击命令;

其中, title即AutoIt Window Info识别出的Title字段, controlID即AutoItWindow Info识别出的Class和Instance的拼接, 如上图拼接后的结果应为:Button2,也就是ClassnameNN的值。

使用AutoIT工具包下的Complie Script to .exe工具把刚编写的脚本编译成可执行文件,操作如下:

4、到Python代码中调用该可执行文件

import os
os.system("D:\\Test\\保存脚本.exe")

至此大功告成

附上源代码

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import win32api, time
import os
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
action = driver.find_element_by_class_name("index-logo-src")
ActionChains(driver).context_click(action).perform()
a = 0
while a < 7:
    win32api.keybd_event(40, 0, 0, 0)
    time.sleep(1)
    a += 1
win32api.keybd_event(13, 0, 0, 0)
time.sleep(1)
os.system("D:\\Test\\保存脚本.exe")
time.sleep(3)
driver.quit()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值