• Selenium3+python3自动化(三十四)--expected_conditions模块 判断弹出框存在(alert_is_present)


    前言

    系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛出异常。那么又不知道它啥时候会出来,那么就需要去判断弹窗是否弹出了。

    一、判断alert源码分析

    class alert_is_present(object):
        """ Expect an alert to be present."""
        def __init__(self):
            pass
    
        def __call__(self, driver):
            try:
                alert = driver.switch_to.alert
                return alert
            except NoAlertPresentException:
                return False
    

     1.这个类比较简单,初始化里面无内容

    2.__call__里面就是判断可以切换到alert,就返回alert这个对象,不可以切换就返回False

     二、实例操作

    1.前面的操作步骤优化了下,为了提高脚本的稳定性,确保元素出现后操作。

    这里结合了WebDriverWait里的方法

    2.实现步骤如下,这里判断的结果返回有两种:没找到就返回False;找到就返回alert对象

    3.先判断alert是否弹出,如果弹出就点确定按钮accept()

    参考代码:

    # coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    #鼠标悬停在设置按钮上
    s=WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_id("s-usersetting-top"))
    ActionChains(driver).move_to_element(s).perform()
    WebDriverWait(driver,5).until(lambda driver:driver.find_element_by_link_text("搜索设置")).click()
    WebDriverWait(driver,5).until(lambda x:x.find_element("id","nr_3")).click()
    driver.find_element_by_link_text("保存设置").click()
    result=EC.alert_is_present()(driver)
    if result:
        print(result.text)
        result.accept()
    else:
        print("alert 未弹出")
    

     运行结果:

    已经记录下您的使用偏好
    

       

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    Zend Framework 入门(2)—多国语言支持
    Zend Framework 入门(1)—快速上手
    国外主流PHP框架比较
    PHP经验集锦
    PHP的GD库函数大全
    最好最实用的PHP二次开发教程
    我的ECshop二次开发从零开始
    Java中实现复制文件或文件夹
    matlab中freqz的用法以及多项式的展开
    matlab滤波器的设计
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13606710.html
Copyright © 2020-2023  润新知