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

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇文章在介绍官网的同时使用了比较多的脚本示例,示例里遇到的问题有部分在本篇文章进行了解释,还有一篇文章专门记录了...
    顾顾314阅读 13,009评论 3 32
  • 洞见SELENIUM自动化测试 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出...
    厲铆兄阅读 6,777评论 3 47
  • 摘要: 之前用Selenium做UI自动化测试从初学到熟练碰到过很多问题,这里就不一一细说了,所以把最基本的操作都...
    Vicky_习惯做唯一阅读 11,547评论 1 23
  • 那些年的爸爸和妈妈还很年轻,那时的我们还很小什么也不懂。好像觉得世界就这么小,自己生活的圈子也很小,或许那时...
    moshanghuakai阅读 563评论 2 5
  • 当我第一次翻开《富兰克林传》时我以为我会看到一位神一样的伟人的一生,还有一个个波澜壮阔的传奇故事。然而读过之后我忽...
    舒哲小义阅读 438评论 0 2