美文网首页软件测试
Selenium实战教程系列(二)---元素定位

Selenium实战教程系列(二)---元素定位

作者: Batkid | 来源:发表于2018-10-27 17:50 被阅读3次

    Selenium webdriver能够模拟人对浏览器进行操作的前提是界面元素的定位。元素的定位可以说是Selenium自动化脚本的基础。这一小节笔者将介绍如何在selenium中进行元素的定位。

    定位元素的方法

    Selenium中提供了以下定位元素的方法:
    首先看一个HTML文件 test_page.:

    <html>
        <body>
            <form class="form-test" name="register" action="success.html" method="post">
        <h3>注册账号</h3>
        <a href="/home">Home Page</a>
        <table bgcolor="aqua">
            <tr>
                <td>昵称:</td>
                <td><input id="input username" type="text" name="username" class="input"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="text" name="password"></td>
            </tr>
            <tr>
                <td>确认密码:</td>
                <td><input type="text" name="confPassword"></td>
            </tr>
            <tr>
                <td>性别:</td>
                <td>
                    <input type="radio" name="sex" value="man" checked>男
                    <input type="radio" name="sex" value="woman">女
                    </td>
                </tr>
            </table>
        </form>
        </body>
     </html>
    

    1. id

    通过元素的id来完成username输入框的定位。

    require 'selenium-webdriver'
    dr = Selenium::WebDriver.for :chrome
    dr.get "http://test.html"
    
    # by id
    dr.find_element(:id, 'input username').click
    

    2.name

    通过元素的name属性来完成对username输入框的定位。

    require 'selenium-webdriver'
    dr = Selenium::WebDriver.for :chrome
    dr.get "http://test.html"
    
    # by name
    dr.find_element(:name, 'username').click
    

    3. class name

    通过元素的class属性来完成对username输入框的定位。

    require 'selenium-webdriver'
    dr = Selenium::WebDriver.for :chrome
    dr.get "http://test.html"
    
    # by name
    dr.find_element(:class, 'input').click
    

    4. link text和partial link text

    通过链接元素的text属性来完成Home Page链接的定位。

    require 'selenium-webdriver'
    dr = Selenium::WebDriver.for :chrome
    dr.get "http://test.html"
    
    # by link_text
    link_text = dr.find_element(:link_text, 'Home Page').get_text
    puts link_text
    
    # by partial_link_text
    link_text = dr.find_element(:partial_link_text, 'Home').get_text
    puts link_text
    

    5. tag name

    通过标签的name来完成header元素的定位

    require 'selenium-webdriver'
    dr = Selenium::WebDriver.for :chrome
    dr.get "http://test.html"
    
    # by tag name
    header_text = dr.find_element(:tag_name, 'h3').get_text
    puts header_text
    

    6. xpath

    xpath是用来定位HTML文档中元素的通用方法,有一套自己的语法规则,支持各种函数,可以说是一种最全面的定位方法。我在开发Selenium自动化用例的过程中,最多使用的就是xpath。
    这里只用简单的例子说明xpath的定位使用,具体的xpath的使用将在另外的专题中介绍。

    require 'selenium-webdriver'
    dr = Selenium::WebDriver.for :chrome
    dr.get "http://test.html"
    
    # by xpath
    dr.find_element(:xpath, "//tr/td/input[@value='women']").click
    

    7. css selector

    css selector和xpath一样,也是功能非常强大的定位方法。但是与xpath不同,css selector只能支持向后定位,而xpath可以支持向前和向后定位。
    下面的例子讲展示如何用css selector定位xpath例子中的同一个元素。

    require 'selenium-webdriver'
    dr = Selenium::WebDriver.for :chrome
    dr.get "http://test.html"
    
    # by css selector
    dr.find_element(:css, "tr>td>input[value='women']").click
    

    定位一组元素

    Selenium中支持同时获取一组元素的定位,这在处理多选项选择,或者表格元素的时候非常有用。

    require 'selenium-webdriver'
    dr = Selenium::WebDriver.for :chrome
    dr.get "http://test.html"
    
    # Get number of items
    num_of_tds = dr.find_elements(:tag_name, "td").count
    

    相关文章

      网友评论

        本文标题:Selenium实战教程系列(二)---元素定位

        本文链接:https://www.haomeiwen.com/subject/knidtqtx.html