Python+Selenium笔记(九):操作警告和弹出框

#之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)

 改成 driver.switch_to.alert就不会了。

(一) 前言

开发人员使用JavaScript 警告或者模态对话框来提示校验错误信息、报警信息、执行操作后的返回信息,甚至用来接收输入值等。

(二) Alert类

Selenium WebDriver 通过Alert 类来操控 JavaScript 警告。

(三) Alert功能及方法

功能/属性

简单说明

text

获取弹出窗口的提示信息(文本内容) alert.text

方法

简单说明

accept()

接受JS警告信息,单击确定

dismiss()

接受JS警告信息,单击取消

send_keys(value)

模拟给元素输入信息

(四) Webdriver API补充说明(基于笔记7)

方法

简单说明

switch_to_active_element()

返回当前焦点的对象

switch_to_alert()

把焦点切换至当前页面弹出的警告

switch_to_default_content()

切换焦点至默认框架内

switch_to_frame()

通过索引、名称和网页元素,将焦点切换至指定的框架

switch_to_window()

切换焦点到指定的窗口

(五) 示例(检查博客园首页点击退出是否弹出提示)

 1 import unittest
 2 from  selenium import webdriver
 3 class SignOut(unittest.TestCase):
 4 
 5     @classmethod
 6     def setUpClass(cls):
 7         #获取自定义的 profile路径
 8         cls.profile = webdriver.FirefoxProfile\
 9             (r'C:\Users\quanhua\AppData\Roaming\Mozilla\Firefox\Profiles\tnwjkr4m.selenium')
10         #创建火狐浏览器驱动实例,启动时加载自定义的profile
11         cls.driver = webdriver.Firefox(cls.profile)
12         cls.driver.implicitly_wait(20)
13         cls.driver.maximize_window()
14         cls.driver.get('https://www.cnblogs.com/')
15     def test_sign_out(self):
16         driver = self.driver
17         #定位博客园首页的 退出
18         span_userinfo = driver.find_element_by_css_selector('#span_userinfo')
19         sign_out_btn = span_userinfo.find_element_by_link_text('退出')
20         sign_out_btn.click()
21         #将焦点切换到当前页面弹出的警告,并获取弹出框的text
22         alert = driver.switch_to_alert()
23         alert_text = alert.text
24         #检查点击退出时,是否弹出提示信息  确认退出吗?
25         self.assertTrue(alert_text == '确认退出吗?')
26         alert.accept() #点击确定
27 
28     @classmethod
29     def tearDownClass(cls):
30         cls.driver.quit()

(六) 使用示例代码需要配置火狐的profile(如下图)

或者百度  Python selenium profile

配置好后,选择自定义的profile打开火狐,登录一次博客园(勾选自动登录),示例代码就可以运行了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端布道

桌面端前端性能优化策略

例如同一个域名 CDN 服务器上的 a.js,b.js,c.js 就可以按如下方式在一个请求中下载:

1082
来自专栏Jerry的SAP技术分享

微信小程序开发系列七:微信小程序的页面跳转

这个系列教程的前六篇文章我们都在单个的视图上操作。现在让我们创建第二个视图,然后实现从第一个视图到第二个视图的跳转。

2272
来自专栏上善若水

013 mysql 忘记密码,修改密码

启动:sudo service mysql start 停止:sudo service mysql stop

1075
来自专栏娱乐心理测试

小程序之保存图片到相册的几种方法

4344
来自专栏技术博文

sublime Text3

sublime Text3实用功能和常用快捷键 PS:ST3在Mac OX与Windows不同平台下的快捷键差别很大。下面是针对windows平台的解说。 1....

30911
来自专栏九彩拼盘的叨叨叨

学习前端 第6周 第5天

712
来自专栏快乐八哥

jQuery Tools Scrollable使用的限制

在现在很多项目中,都会使用到jQuery Tools中scrollable。特别对于显示Photo Gallery,当然目前国内国外都有第三方非常优秀的的类似j...

2065
来自专栏技术墨客

Next.js入门教程 原

参考代码:https://github.com/chkui/nextjs-getting-started 。

9112
来自专栏编程微刊

前端程序员表白神器

3942
来自专栏码生

Chrome 浏览器最牛插件之一 Vimium

最近学习了一下,整理了一下官方的默认按键。其中我使用到的都进行了中文翻译,一些没有翻译的是我没有使用的,这部分理解不深,不想误导大家,所以将英文原文放在这里,还...

2471

扫码关注云+社区

领取腾讯云代金券