当前位置: 移动技术网 > IT编程>开发语言>JavaScript > selenium弹窗处理,包括Javascript弹窗、HTML弹出层和Windows弹窗

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

2020年07月17日  | 移动技术网IT编程  | 我要评论
弹窗处理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

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网