selenium2.0第一部分:定位元素

Selenium WebDriver提供了先进的技术定位网页上的元素,Selenium丰富的API提供了多种定位元素的策略,例如如姓名、XPath ID、CSS选择器等等,也能自定义定位方法来定位元素

一、通过fidElement方法定位元素

WebDriver and WebElement class.提供findElement()和findElements()方法来定位元素

findElement()方法会通过特殊的索引返回web元素的信息,或者抛出异常(没有找到匹配的元素)

findElements()方法返回一个web元素列表或者空列表(为匹配到元素)

(1)通过ID属性找元素

在页面上,通过ID属性定位元素的方法最为实用,W3C建议为页面上每一个元素提供独一无二的ID,这个独一无二的ID属性能够明确的和可靠的定位元素

在处理DOM,浏览器使用id作为首选方法和识别元素这提供了最快的定位策略。

eg:现在让我们看看如何使用id属性定位元素的登录表单。

定位用户名和密码的区域,我们可以使用id属性以下的方式:

WebElement username = driver.findElement(By.id("username"));

WebElement password = driver.findElement(By.id("password"));

(2)通过name属性找元素

通过ID属性定位元素是首选的策略,但是你可能会发现不能用ID定位元素的情况,如下:

1)页面上并不是所有的元素都有其独特的ID属性

2)对于页面上的关键元素的ID属性不是独有的

3)元素的ID属性自动生成

eg:登录表单用name属性代替了ID属性

可以通过一下方式用name属性定位元素:

WebElement username = driver.findElement(By.name("username"));

WevElement password = driver.findElement(By.name("password"));

不像ID那样,name属性在一个页面可能不是唯一的,你可能会找到不同的相似的name属性,在这种情下,页面上第一个带有这个特殊数值的元素将会被选中。如果这个元素不是你想要的那个元素,将会引起错误

(3)通过元素的类属性寻找

除了使用ID和name属性寻找元素之外,也可以使用类属性定位元素。这个类属性是元素上应用的CSS提供的

eg:登录表单用类属性替代ID属性

可以通过一下的方法利用类属性定位元素

WebElement username = driver.findElement(By.className("username"));

WebElement password = driver.findElement(By.className("password"));

Selenium WebDriver API提供的findElement()方法定位元素是要求要在测试页面的测试下,当通过特殊的标准定位一个元素的时候,系统遍历DOM(文档对象模型)去匹配元素,并且返回第一个匹配成功的元素

2、补充

WebElement类也提供了定位子元素的方法。例如想象一下页面上有很多重复的元素,但是他们是在不同的<div>中的元素,我们可以先定位父<div>中的元素,然后在定位子元素,结合上下文中的<div>有如下的方法

WebElement div = driver.findElement(By.id("div1"));

WebElement topLink = driver.findElement(By.linkText("top"));

NoSuchElementFoundException异常:找不到元素的时候报错

用fidElements方法定位元素

Selenium WebDriver提供findElements()方法,他能够手机元素列表,与搜索标准相匹配,这个方法是非常有用的,如果你想定位一大批相似的元素,例如我们可以获取页面上所有的展示的链接,或者从一个表中获取行等等,我们可以通过findElements()方法来获取所有链接,并打印他们

eg:创建一个测试能够获取页面上所有的link,核实link数量,并打印每个link的目标

findElements()方法会返回所有元素的匹配作为一个WebElement列表,在JAVA中可以使用List类创建WebElement的一个实例

List<WebElement> links = driver.findElements(By.tagName("a"));

List类中的size()告诉我们列表中有多少元素

assertEquals(4, links.size());判断links中的元素是不是4

还向下面这样迭代的使用这个列表获取链接并打印目标

for(WebElement link : links)

System.out.println(link.getAttribute("href"));

定位一个元素使用findElements()方法

二、link定位

时间: 2024-10-11 05:33:56

selenium2.0第一部分:定位元素的相关文章

selenium2通过linkText/partialLinkText定位元素

通过linkText定位 linkText是根据链接的文本来定位,如下图,导航上全是链接 此时我想找“新闻”这个元素,那么我就可以使用linkText方式定位,语法: By.linkText(“新闻”); WebElement接收对象代码如下: WebElement element = driver.findElement(By.linkText(“新闻”)); 通过partialLinkText定位 这个与LinkText方法类似,通过给出的链接文本去定位,这个链接文本只要包含在整个文本中即可

初探UiAutomator2.0中使用Xpath定位元素

J 今天的主题是讲一下在使用过程中遇到的一个问题,如何在UiAutomator2.0中使用Xpath定位元素? 背景 现在的app在打包成apk的时候都是有加固处理的,各种混淆加固,所以已经破坏了或扰乱了原本的代码变量命名形式,这就给我们要基于界面来做自动化测试带来了灾难性的阻碍,因为那些混淆过的id是不固定的,下一次再出个新版本,这一切都变了,所以这就没办法用id来定位混淆过的app元素,那还有什么好的方法吗?还记得Web自动化测试中神乎其技的xpath吗?不管什么元素都可以用它定位出来,所以

Selenium2+python自动化02-八种元素定位(Firebug和Firepath)

前言    自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位.元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%:操作元素10%,获取返回结果10%:断言10%.如果一个页面上的元素不能被定位到,那后面的操作就无法继续了.接下来就来讲webdriver提供的八种基本元素定位方法. 一.环境准备: 1.浏览器选择:Firefox 2.安装插件:Firebu

Selenium2+python自动化8-SeleniumBuilder辅助定位元素

前言 福利来了,对于用火狐浏览器的小伙伴们,你还在为定位元素而烦恼嘛? 上古神器Selenium Builder来啦,哪里不会点哪里,妈妈再也不用担心我的定位元素问题啦!(但是也不是万能,基本上都能覆盖到) 一.安装Selenium Builder 在火狐浏览器的附加组件中搜索添加Selenium Builder即可.安装好后如下图所示: 二.直接运用 1.打开你要测试的URL或者打开插件后输入你要测试的URL,如下图 2.点击后弹出一个弹窗,如下图: 注:如果你是直接在你要测的网页页面打开这个

Selenium2.0+TestNG+Ant+Jenkins自动化测试浅尝

当前常用自动化测试工具 Web自动化测试工具:QTP .selenium等 性能自动化测试工具:loadrunner.jmeter等 接口自动化测试工具:SoapUI.postman等 手机自动化测试工具:robotium.appium等 自动化脚本录制 Selenium 1.0包括:selenium IDE.selenium Grid.selenium RC三部分. Selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能IDE录制的脚本可以可以

Appium学习路—Android定位元素与操作

一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tools目录下 monitor:Android SDK自带的一个工具,在tools目录下 Appium Inspector:Appium自带的一个功能,只有mac下可以使用该功能 下面是用monitor抓取到的页面元素 下面使用Appium Inspector定位的元素 二.元素定位   1.格式:find_element_by_定位方式(value) 通过id定位 (取resource-id的值): dr

appium -- Xpath定位元素

如文章<Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.其中一种就是根据控件所在页面的XPATH来定位控件. 本文就是尝试通过自己的试验来尝试对Appium如何用xpath来定位控件做一个阐述,当中如有不对的地方敬请大家指出. 1. 背景 本文尝试使用的试验对象是SDK自带的NotePad应用实例,假设已经有两个Notes分别是“note1”和“note2”添加到Notepad上面,我们要做的就是尝试用xpath的方法来定位“not

selenium2.0(WebDriver) API - 转载自:http://www.cnblogs.com/puresoul/p/3477918.html

1.1  下载selenium2.0的包 官方download包地址:http://code.google.com/p/selenium/downloads/list 官方User Guide:  http://seleniumhq.org/docs/ 官方API:  http://selenium.googlecode.com/git/docs/api/java/index.html 1.2.1  用webdriver打开一个浏览器 打开firefox浏览器: WebDriver driver

selenium2.0(WebDriver) API

1.1  下载selenium2.0的包 官方download包地址:http://code.google.com/p/selenium/downloads/list 官方User Guide:  http://seleniumhq.org/docs/ 官方API:  http://selenium.googlecode.com/git/docs/api/java/index.html 1.2.1  用webdriver打开一个浏览器 打开firefox浏览器: WebDriver driver