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


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

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

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

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

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

    警告框处理

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

    text返回alertconfirmprompt中的文字信息。

    accept接收现有警告框。

    dismiss解散现有警告框。

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

    <!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()方法接受警告框。

  • 相关阅读:
    Firefly 3288又一次制作android和lubuntu双系统固件
    想做一个完美的健身训练计划,你须要知道什么?
    【LeetCode-面试算法经典-Java实现】【075-Sort Colors (颜色排序)】
    每天进步一点点——Ganglia的Python扩展模块开发
    Unity3D-rigidBody.velocity
    泛型初识
    HDOJ 5418 Victor and World 状压DP
    UIPopoverController具体解释
    怎样提升站点的性能?
    PHP操作MongoDB数据库具体样例介绍(增、删、改、查) (六)
  • 原文地址:https://www.cnblogs.com/lirongyang/p/11459632.html
Copyright © 2020-2023  润新知