欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

selenium弹窗处理,包括Javascript弹窗、HTML弹出层和Windows弹窗

程序员文章站 2022-03-13 20:23:31
弹窗处理Javascript弹窗Javascript中有3种弹窗:alert(只有一个确认按钮)、confirmation(有确认和取消两个按钮供选择)、prompt(需要输入内容)。无法使用selenium提供的find_element_by_xx()定位到alert中的元素。Selenium提供一组统一的API处理它们,代码形式上都当做Alert的实例来处理。alert = driver.switch_to_alert()切换到当前弹出的alert。关闭了alert之后,回到aler...

弹窗处理

Javascript弹窗

Javascript中有3种弹窗:alert(只有一个确认按钮)、confirmation(有确认和取消两个按钮供选择)、prompt(需要输入内容)。

无法使用selenium提供的find_element_by_xx()定位到alert中的元素。 

Selenium提供一组统一的API处理它们,代码形式上都当做Alert的实例来处理。

alert = driver.switch_to_alert()切换到当前弹出的alert。关闭了alert之后,回到alert弹出之前的frame。

alert.accept():单击确认按钮。alert消失后,可以直接操作原来的driver。

alert.authenticate(username, password):在HTTP标准的BASIC或者DIGEST认证框中输入用户名密码,并且点击确认。并不适用于基于表单的认证。

alert.dismiss():点击取消按钮。

alert.send_keys(keysToSend):向alert的文本输入框中输入内容。

alert.text:获取alert的文本内容。

HTML弹出层

网页上弹出的信息也可能是html弹出层内容。Html弹出层能实现比javascript弹窗更丰富的效果。

Javascript将弹出层html设置为可见时,就出现了弹窗。

html弹出层的元素可以直接通过selenium定位和操作。但是要注意弹出层的窗口没有打开时,弹出层的元素是不可见的,所以虽然可以定位到,但是不能进行操作。

Windows弹窗

操作网页时可以会出现Windows窗口,比如ctrl+s会弹出Windows窗口、右键另存为下载、选择要上传的文件等。但是selenium操作不了Windows窗口。可以使用autoit3来处理Windows窗口。

使用举例:

#导入python win32处理包

import win32com.client

#ctrl+s保存网页

ActionChains(driver).key_down(Keys.CONTROL).send_keys("s").key_up(Keys.CONTROL).perform();

#启动autoitx进程

autoit = win32com.client.Dispatch("AutoItX3.Control")

autoit.WinWaitActive("另存为")

file_name="page"

autoit.Send(file_name)

#按钮“保存”的id是1

autoit.ControlClick("另存为","","1")

 

有Windows弹窗时,无法手工操作web页面,但是selenium可以继续正常操作web页面,还可以正常关闭浏览器。

上传、下载文件

要上传文件时,可以找到填写文件路径的input元素,通过send_keys()输入文件路径。

避免点击“浏览”,因为会出现windows窗口,但是selenium不支持操作Windows控件。如果要操作windows窗口,要借助autoit。

下载文件时如果弹出windows窗口,可以使用autoit操作,实现下载。更好的办法是对浏览器进行设置,使得点击下载时不弹出提示框。这样,selenium点击下载按钮时,就会立刻进行下载。

本文地址:https://blog.csdn.net/jxzdsw/article/details/107365658

相关标签: selenium selenium