zoukankan      html  css  js  c++  java
  • 弹出框处理

    1 pythonseleniumAPI交互

    1.1 alert

    seleniumAPI提供了对alert弹出框的处理方式,可以对alert弹出框来进行处理的,如弹出框,我们获取弹出框的Text,或者接受弹出框,或者是取消(关闭)弹出框,下面分别是alertConfirmationPrompt进行一一的说明。selenium操作alert需要导入alert的发类,具体为:fromselenium.webdriver.common.alert import Alert alert类的属性汇总如下:

    方法

    描述

    Example

    text

    获取弹出框的文本

    alert.text

    accept

    接收javascript警告框

    alert.accept()

    dismiss

    拒绝javascript警告框

    alert.dismiss()

    Send_keys(value)

    模拟输入

    alert.send_keys(value)

    text

    text是获取alert弹出框的文本,在百度搜索设置中,设置成功后,点击"搜索设置",弹出alert框,alert框文本显示为:“已经记录下您的使用偏好”,见效果图:


    我们通过如下的代码,获取该alert弹出框的text,见如下的代码:

    #coding:utf-8

     

    fromselenium import webdriver

    fromselenium.webdriver.common.by import By

    fromselenium.webdriver.common.action_chains import ActionChains

    fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

    fromselenium.webdriver.support.ui import Select

    fromselenium.webdriver.common.alert import Alert

    fromtime import sleep

     

    driver=webdriver.Firefox()

    driver.maximize_window()

    driver.implicitly_wait(30)

    driver.get('http://www.baidu.com')

    sleep(2)

    driver.find_element_by_link_text(u'设置').click()

    driver.find_element_by_xpath(".//*[@id='wrapper']/div[5]/a[1]").click()

    select=Select(driver.find_element_by_name('NR'))

    select.select_by_value(u'50')

    driver.find_element_by_xpath(".//*[@id='gxszButton']/a[1]").click()

    #获取弹出alert框的text

    printdriver.switch_to_alert().text

    driver.quit()

    accept()

    accept表示接受javascript的警告框,一个 alert弹出框弹出后,用户可以选择接受或者拒绝,我们任然已百度搜索为案例,实现对搜索设置的接收,见实现的代码:

    #coding:utf-8

     

    fromselenium import webdriver

    fromselenium.webdriver.common.by import By

    fromselenium.webdriver.common.action_chains import ActionChains

    fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

    fromselenium.webdriver.support.ui import Select

    fromselenium.webdriver.common.alert import Alert

    fromtime import sleep

     

    driver=webdriver.Firefox()

    driver.maximize_window()

    driver.implicitly_wait(30)

    driver.get('http://www.baidu.com')

    sleep(2)

    driver.find_element_by_link_text(u'设置').click()

    driver.find_element_by_xpath(".//*[@id='wrapper']/div[5]/a[1]").click()

    select=Select(driver.find_element_by_name('NR'))

    select.select_by_value(u'50')

    driver.find_element_by_xpath(".//*[@id='gxszButton']/a[1]").click()

    #接受

    printdriver.switch_to_alert().accept()

    #验证是否已接受alert

    sleep(3)

    driver.find_element_by_link_text(u'设置').click()

    driver.find_element_by_xpath(".//*[@id='wrapper']/div[5]/a[1]").click()

    assert driver.find_element_by_name('NR').get_attribute('value') in '50'

    driver.quit()

     

    dismiss()

    dismiss表示取消javascript的警告框,即拒绝,我们任然已百度搜索设置为案例,来说明dismiss的使用方法,见实现的代码:

    #coding:utf-8

     

    fromselenium import webdriver

    fromselenium.webdriver.common.by import By

    fromselenium.webdriver.common.action_chains import ActionChains

    fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

    fromselenium.webdriver.support.ui import Select

    fromselenium.webdriver.common.alert import Alert

    fromtime import sleep

     

    driver=webdriver.Firefox()

    driver.maximize_window()

    driver.implicitly_wait(30)

    driver.get('http://www.baidu.com')

    sleep(2)

    driver.find_element_by_link_text(u'设置').click()

    driver.find_element_by_xpath(".//*[@id='wrapper']/div[5]/a[1]").click()

    select=Select(driver.find_element_by_name('NR'))

    select.select_by_value(u'20')

    driver.find_element_by_xpath(".//*[@id='gxszButton']/a[1]").click()

    #拒绝alert

    printdriver.switch_to_alert().dismiss()

    driver.quit()

    4.1.1 alert

    alert是一种警告框,自动化的测试中,对alert的,一般会获取alert的文本,或者是接受 alert警告框,或者是拒绝警告框。如下是些的一个测试的alert的源码,见源码:

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title></title>

    <script>

    alert("这是一个测试alert的数据")

    </script>

    </head>

    <body>

    </body>

    </html>

    效果图为:


    我们获取alerttext,并且接受alert的警告框,实现这样的一个过程的测试脚本为:

    #coding:utf-8

     

    from selenium import webdriver

    from selenium.webdriver.common.by import By

    from selenium.webdriver.common.action_chainsimport ActionChains

    from selenium.common.exceptions importNoSuchElementException, UnexpectedTagNameException

    from selenium.webdriver.support.uiimport Select

    from selenium.webdriver.common.alert importAlert

    from time import sleep

     

     

    driver=webdriver.Firefox()

    driver.maximize_window()

    driver.implicitly_wait(30)

    driver.get('file:///C:/Users/liwangping/Desktop/demo.html')

    #输出alerttext

    print driver.switch_to_alert().text

    driver.switch_to_alert().accept()

    driver.quit()

    4.1.2Confirmmation

    conirmation是确认的对话框,用户可以点击确定或者取消,如下是编写的见html的代码:

    <html>

    <head>

    <meta charset="UTF-8">

    <title></title>

    <script type="text/javascript">

    function disp_confirm()

    {

    varr=confirm("Press a button")

    if(r==true)

    {

    document.write("You pressed OK!")

    }

    else

    {

    document.write("You pressed Cancel!")

    }

    }

    </script>

    </head>

    <body>

     

    <input type="button"onclick="disp_confirm()"

    value="请点击" />

     

    </body>

    </html>

    效果图是:

     



    我们实现点击“请点击”,然后点击“确定”的按钮,实现这样的一个过程的自动化的测试脚本为:

    #coding:utf-8

     

    from selenium import webdriver

    from selenium.webdriver.common.by import By

    fromselenium.webdriver.common.action_chains import ActionChains

    from selenium.common.exceptions importNoSuchElementException, UnexpectedTagNameException

    from selenium.webdriver.support.uiimport Select

    from selenium.webdriver.common.alert importAlert

    from time import sleep

     

    driver=webdriver.Firefox()

    driver.maximize_window()

    driver.implicitly_wait(30)

    driver.get('file:///C:/Users/liwangping/Desktop/demo.html')

    #点击“请点击”

    driver.find_element_by_xpath("html/body/input").click()

    #点击确定按钮

    driver.switch_to_alert().accept()

    sleep(6)

    driver.quit()

    4.1.3Prompt

    promptjavascript中的一个方法,prompt() 方法是用于可提示用户输入的对话框,如下代码是一个实例,见具体的代码:

    <html>

    <head>

    <meta charset="UTF-8">

    <title></title>

    <scripttype="text/javascript">

    functiondisp_prompt(){

    var name=prompt("Please enter yourname","")

    if (name!=null &&name!=""){

    document.write("Hello " +name + "!")

    }

    }

    </script>

    </head>

    <body>

    <inputtype="button" onclick="disp_prompt()"

    value="请点击"/>

    </body>

    </html>

    案例是点击按钮,弹出输入框,输入内容,然后会显示:hello输入的内容,见效果图;



     

     

    点击确定后,见显示的效果图:


     

    实现这样的一个过程的自动化测试脚本如下:

    #coding:utf-8

     

    fromselenium import webdriver

    fromselenium.webdriver.common.by import By

    fromselenium.webdriver.common.action_chains import ActionChains

    fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

    fromselenium.webdriver.support.ui import Select

    fromselenium.webdriver.common.alert import Alert

    fromtime import sleep

     

    driver=webdriver.Firefox()

    driver.maximize_window()

    driver.implicitly_wait(30)

    driver.get('file:///C:/Users/liwangping/Desktop/demo.html')

    #点击“请点击”

    driver.find_element_by_xpath("html/body/input").click()

    #输入内容

    driver.switch_to_alert().send_keys('webdriver')

    driver.switch_to_alert().accept()

    driver.quit()

     

    4.2 Select

    选择类是一类特殊的selenium,主要使用场景在下拉菜单或者列表中,它提供了各种方法和属性的用户交互。操作select我们需要陪导入select类:from selenium.webdriver.support.ui import Select 选择类的属性和方法汇总如下:

    方法

    描述

    Example

    all_selected_options

    得到列表的所有选择项

    element.all_selected_options

    first_selected_option

    得到第一个选择项

    element.first_selected_option

    options

    得到了所有选项的列表

    element.options

    deselect_all()

    清楚所有从一个下拉框

    element.deselect_all()

    deselect_by_index(index)

    取消选择在给定的下拉框的选项

    element. deselect_by_index(1)

    deselect_by_value(value)

    匹配下拉框中的值

    element. deselect_by_value(value)

    deselected_by_visible_text(text)

    显示文本的选项匹配参数下拉

    element. deselected_by_visible_text(text)

    select_by_index(index)

    选择给定索引的下拉框

    element.select_by_index(1)

    select_by_value(value)

    选择下拉框匹配的value

    element.select_by_value(value)

    select_by_visible_text(text)

    选择文本匹配的下拉框

    element.select_by_visible_text(text)

    测试案例的html代码见如下:

    <html>

    <head>

    <meta charset="UTF-8">

    <title></title>

    </head>

    <body>

     

    <selectid="selectMethod"onchange="updateShipping(options[selectedIndex]);"name="selectMethod">

     

    <optionvalue="c">C语言</option>

     

    <optionvalue="c++">C++语言</option>

     

    <optionvalue="java">java语言</option>

     

    <optionvalue="c#">C#语言</option>

     

    <optionvalue="python">python语言</option>

     

    <optionvalue="ruby">ruby语言</option>

     

    <optionvalue="html">html脚本</option>

     

     

    </select>

     

    </body>

     

    </html>

    html执行后的效果为:


    all_selected_options

    all_selected_options是得到列表的所有选择项,具体案例代码见如下:

    #!coding:utf-8

     

    fromselenium import webdriver

    fromselenium.webdriver.common.by import By

    fromselenium.webdriver.common.action_chains import ActionChains

    fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

    fromselenium.webdriver.support.ui import Select

    fromtime import sleep

     

     

    driver=webdriver.Firefox()

    driver.maximize_window()

    driver.implicitly_wait(30)

    driver.get('file:///C:/Users/liwangping/Desktop/demo.html')

    select=Select(driver.find_element_by_id('selectMethod'))

    printselect.all_selected_options

    driver.quit()

     

    first_selected_option

    first_selected_option是得到下拉框的第一个选项,案例中的下拉框第一个选项是C语言,实现过程见如下的代码:

    #coding:utf-8

     

    fromselenium import webdriver

    fromselenium.webdriver.common.by import By

    fromselenium.webdriver.common.action_chains import ActionChains

    fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

    fromselenium.webdriver.support.ui import Select

    fromtime import sleep

     

    driver=webdriver.Firefox()

    driver.maximize_window()

    driver.implicitly_wait(30)

    driver.get('file:///C:/Users/liwangping/Desktop/demo.html')

    select=Select(driver.find_element_by_id('selectMethod'))

    print select.first_selected_option

    driver.quit()

     

    select_by_index(index)

    select_by_index(index)是获取下拉框的对应的索引文件,如获取java语言,对应的索引为2,切记索引从0开始,实现的过程见如下的代码:

    #coding:utf-8

     

    fromselenium import webdriver

    fromselenium.webdriver.common.by import By

    fromselenium.webdriver.common.action_chains import ActionChains

    fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

    fromselenium.webdriver.support.ui import Select

    fromtime import sleep

     

    driver=webdriver.Firefox()

    driver.maximize_window()

    driver.implicitly_wait(30)

    driver.get('file:///C:/Users/liwangping/Desktop/demo.html')

    select=Select(driver.find_element_by_id('selectMethod'))

    select.select_by_index(2)

    sleep(3)

    driver.quit()

     

    select_by_value(value)

    select_by_value(value)是获取下拉框中匹配的value值,如下拉框想选择"python语言",对应的value="python",下拉框的效果图为:


    实现代码见如下:

    #coding:utf-8

     

    fromselenium import webdriver

    fromselenium.webdriver.common.by import By

    fromselenium.webdriver.common.action_chains import ActionChains

    fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

    fromselenium.webdriver.support.ui import Select

    fromtime import sleep

     

    driver=webdriver.Firefox()

    driver.maximize_window()

    driver.implicitly_wait(30)

    driver.get('file:///C:/Users/liwangping/Desktop/demo.html')

    select=Select(driver.find_element_by_id('selectMethod'))

    select.select_by_value('python')

    sleep(3)

    driver.quit()

    select_by_visible_text(text)

    select_by_visible_text(text)在选择下拉框中,是依据text来匹配的,如想选择"python语言"一项,对应的text="python语言",实现该功能的代码见如下:

    #coding:utf-8

     

    fromselenium import webdriver

    fromselenium.webdriver.common.by import By

    fromselenium.webdriver.common.action_chains import ActionChains

    fromselenium.c

  • 相关阅读:
    Java实现 LeetCode 680 验证回文字符串 Ⅱ(暴力)
    Java实现 LeetCode 680 验证回文字符串 Ⅱ(暴力)
    Java实现 LeetCode 680 验证回文字符串 Ⅱ(暴力)
    PHP import_request_variables() 函数
    PHP gettype() 函数
    PHP get_resource_type() 函数
    PHP get_defined_vars() 函数
    PHP floatval()、doubleval () 函数
    反射的相关知识点
    泛型知识
  • 原文地址:https://www.cnblogs.com/344525813xiang/p/6594289.html
Copyright © 2011-2022 走看看