selenium 弹框

Web页面弹窗的分类

弹窗通常有3种:Alert类型弹框、Confirm类型弹框、Prompt类型弹框,这种我们无法通过定位元素来操作。它们的具体特点如下:

  • Alert弹窗:只有信息及确认按钮

  • Confirm弹窗:在Alert弹窗基础上增加了取消按钮

  •  Prompt类型弹框:在Confirm的基础上增加了可输入文本内容的功能

  •  

    selenium中提供了如下方法来处理弹窗,具体的解决方案如下:

    1
    2
    3
    4
    5
    6
    7
    8
    from selenium import webdriver
      
    driver = webdriver.Chrome()
    driver.switch_to.alert.accept() #确定、同意;三种弹窗都可使用
    driver.switch_to.alert.dismiss() #取消、不同意;confirm和prompt弹窗中使用
    title = driver.switch_to.alert.text #打印弹窗信息
    alert = driver.switch_to.alert #获取alert对象
    alert.send_keys() #Prompt弹窗中输入内容

    有些弹窗并非浏览器的alert 窗口,而是html元素,这种对话框只需要按照常规的定位页面元素进行处理即可

  • 实战演练
  • 复制代码
    import unittest
    from selenium import webdriver
    from time import sleep
     
    class TestAlert(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.implicitly_wait(5)
            self.driver.maximize_window()
     
        def tearDown(self):
            self.driver.quit()
     
        def test_alert(self):
            self.driver.get(r'http://sahitest.com/demo/alertTest.htm')
            self.driver.find_element('name','b1').click()
            alert = self.driver.switch_to.alert
            print(alert.text)
            alert.accept()
            sleep(2)
        def test_confirm(self):
            self.driver.get(r'http://sahitest.com/demo/confirmTest.htm')
            self.driver.find_element('name','b1').click()
            alert = self.driver.switch_to.alert
            print(alert.text)
            alert.accept()
            # alert.dismiss()
            sleep(2)
        def test_prompt(self):
            self.driver.get(r'http://sahitest.com/demo/promptTest.htm')
            self.driver.find_element('name','b1').click()
            alert = self.driver.switch_to.alert
            print(alert.text)
            alert.send_keys("CR77777777777777777")
            sleep(1)
            alert.accept()
            sleep(2)
     
    if __name__ == '__main__':
        unittest.main()
    复制代码

     

posted @   徐俊112  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示