(二十四)WebDriver API之警告框处理

随笔记录方便自己和同路人查阅。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,

这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。

#------------------------------------------------我是可耻的分割线-------------------------------------------

 

警告框处理

WebDriver中处理JavaScript所生成的alertconfirm以及prompt十分简单,具体做法使用switch_to_aler()方法定位到alert\confirm\prompt,然后使用text/accept/dismiss/send_keys等方法进行操作。

text返回alert\confirm\prompt中的文字信息。

accept接收现有警告框。

dismiss解散现有警告框。

send_keys(KeysToSend)发送文本至警告框。KeysToSend:将文本发送至将警告框。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="button" id="alert2" onclick="func()" value="按钮"></input>
    <script>
        function func(){
            alert(123);
        }
    </script>
</body>
</html>

 

  

  以上html代码是我们自己写的一个简单的alert弹框,先以它为例,这个时候就可以通过switch_to_alert()方法接收这个弹框。

 

复制代码
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('C:\\Users\\86136\\PycharmProjects\\spider\\alert.html')

#定位到按钮
driver.find_element_by_class_name('alert2').click()

time.sleep(1)
#接收警告框
driver.switch_to_alert().accept()
复制代码

 

  通过switch_to_alert()接收当前页面的警告框。并使用accept()方法接受警告框

 

  以百度搜索设置弹出的弹框窗口为例,它不能通过前端工具对其进行定位,这个时候就可以通过switch_to_alert()方法接收这个弹框。

 

复制代码
from selenium.webdriver.support.select import Select
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time as t

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')

#实现鼠标悬浮到百度首页的设置
element = driver.find_element_by_css_selector('a.pf:nth-child(8)')
t.sleep(3)
ActionChains(driver).move_to_element(element).perform()
t.sleep(3)
#点击设置中的搜索设置按钮
driver.find_element_by_css_selector('.setpref').click()
t.sleep(2)
#定位到下拉框的元素属性
nr = driver.find_element_by_name('NR')
#实例化Select类
select = Select(nr)
#按value值得方式来选择下拉框中的内容
select.select_by_visible_text('每页显示50条')
print('下拉框选择的最新条数是:',nr.get_attribute('value'))
#点击保存设置按钮
driver.find_element_by_css_selector('#gxszButton > a.prefpanelgo').click()
#获取弹出的文本信息
print('alert 弹出框的文本信息为:{0}'.format(driver.switch_to_alert().text))
t.sleep(3)
#点击alert弹出框中的确定按钮
driver.switch_to_alert().accept()
driver.quit()
复制代码

 

  ActionChains类提供的move_to_element()鼠标悬停的使用,将鼠标悬停在“设置”链接上,然后在弹出的下拉菜单中选择的最新条数是50,并点击“保存设置”按钮,弹出保存确认警告框。通过switch_to_alert()方法获取当前页面的警告框,text方法获取警告框文本内容,accept()方法接受警告框。

 

posted @   李荣洋  阅读(248)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示