zoukankan      html  css  js  c++  java
  • 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:UsersquanhuaAppDataRoamingMozillaFirefoxProfiles	nwjkr4m.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打开火狐,登录一次博客园(勾选自动登录),示例代码就可以运行了。

     

  • 相关阅读:
    修改数据库表的字符集
    mysql 修改表名的方法:sql语句
    内存写越界导致破环堆结构引起的崩溃问题定位经验[如报错malloc(): memory corruption或free(): invalid next size]
    Linux与Windows编译器的区别
    点到线段的距离计算方法
    利用海伦公式求点到线段距离的算法
    MYSQL导入导出.sql文件
    Mysql导出表结构及表数据 mysqldump用法
    玩扑克牌学概率论
    程序员面试题精选100题(40)-扑克牌的顺子
  • 原文地址:https://www.cnblogs.com/simple-free/p/8456167.html
Copyright © 2011-2022 走看看