Selenium webdriver系列教程(4)—如何定位测试元素

发表于:2013-9-17 11:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:乙醇    来源:51Testing软件测试网采编

  测试对象定位一般都是各种web自动化测试框架或工具的核心内容。

  selenium-Webdriver的对象定位方法非常的丰富和强大。一般来说强大的对象定位都会提供如下的一些方法。

  ·单个对象的定位方法

  ·多个对象的定位方法

  ·层级定位

  selenium-Webdriver很好的支持了上述的3种定位方式。

  定位单个对象

  在定位单个对象时,selenium-Webdriver支持使用如下的一些属性对元素进行定位。

:class             => 'class name',
:class_name        => 'class name',
:css               => 'css selector',
:id                => 'id',
:link              => 'link text',
:link_text         => 'link text',
:name              => 'name',
:partial_link_text => 'partial link text',
:tag_name          => 'tag name',
: xpath             => 'xpath',

  使用class或class_name进行定位

  当所定位的对象具有class属性的时候我们可以通过class或class_name来定位该对象。

  下面的例子定位了soso首页上class为"new"的span。

require 'rubygems'
require 'selenium-webdriver'
require 'pp'
url = %q{http://www.soso.com/}
dr = Selenium::WebDriver.for :ie
dr.navigate.to url
sleep 1
new_icon = dr.find_element(:class => 'ico_new')
puts new_icon.tag_name # ---> span

  使用id属性定位

  soso首页的搜索输入框的html代码如下:

  <input type="text" name="w" smartpid="sb.idx" smartch="sb.c.idx" autocomplete="off" id="s_input" value="">

  在进行定位前我们先动态定义highlight方法,该方法的作用是高亮显示有id属性的页面元素。

  随后的代码演示了如何使用id属性来定位soso首页上的搜索输入框。

require 'rubygems'
require 'selenium-webdriver'
require 'pp'
Selenium::WebDriver::Element.module_eval do
def highlight
e_id = self.attribute('id')
puts "#{e_id} = e_id"
js = <<JS
document.getElementById("#{e_id}").style.border = "3px solid red"
JS
@bridge.executeScript(js) if e_id
end
end
url = %q{http://www.soso.com/}
dr = Selenium::WebDriver.for :ie
dr.navigate.to url
sleep 1
s_input = dr.find_element(:id => 's_input')
# 或者使用语法糖衣
# s_input = dr['s_input']
s_input.highlight

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号