Java+selenium之WebDriver定位页面元素(二)

Selenium-Webdriver 提供了强大的元素定位方法,支持以下三种方法: 单个对象的定位方法,多个对象的定位方法和层级定位

1. 定位单个元素

 1 // 对于元素的属性包含 id 的情况适用,推荐使用
 2 WebElement we = drive.findElement(By.id("id"));
 3 // 对于元素的属性包含 name 的情况适用,推荐使用
 4 WebElement we = drive.findElement(By.name("name"));
 5 // 通用定位方式,对于不好定位的元素适用 ,推荐使用
 6 WebElement we = drive.findElement(By.xpath("xpathExpression"));
 7 // 适用于链接类的元素,即 <a> 标签,包含 herf 属性的元素
 8 WebElement we = drive.findElement(By.linkText("linkText"));
 9 // 适用于链接类的元素,模糊匹配,即包含 herf 属性的元素
10 WebElement we = drive.findElement(By.partialLinkText("linkText"));
11 // 对于元素的属性包含 class 的情况适用, 处理复合型class(中间有空格的classname)的方法 ,处理方法只选择class属性中的一个值
12 WebElement we = drive.findElement(By.className("className"));
13 // 通用定位方式,对于不好定位的元素适用
14 WebElement we = drive.findElement(By.cssSelector("selector"));
15 // 通用定位方式,用于层级定位
16 WebElement we = drive.findElement(By.tagName("tagName"));

2. 定位多个元素

findElements()方法可以返回一个符合条件的元素 List

1 // 定义了一个集合,将 class 一样的元素一次性定位出来
2 List<WebElement> elements = driver.findElements(By.className("className"));
3 // 通过集合的下标进行操作,集合的第一位下标是0 ,参数index 就是下标
4 elements.get(index).click();

3. 层级定位

  层级定位的思想是先定位父元素,然后再从父元素中精确定位出其我们需要选取的子元素。层级定位一般的应用场景是无法直接定位到需要选取的元素,但是其父元素比较容易定位,通过定位父元素再遍历其子元素选择需要的目标元素,或者需要定位某个元素下所有的子元素。比较典型的应用是表格的定位。

1 // 得到 table 元素对象
2 WebElement table = driver.findElement(By.id("id"));
3 // 得到 table 表中所有行对象,并得到所要查询的行对象。
4 List<WebElement> rows = table.findElements(By.tagName("tr"));
5 // 定位下拉列表
6 WebElement select = driver.findElement(By.id("id"));
7 // 从下拉列表中查找所有的选项
8 List<WebElement> option = a.findElements(By.tagName("option"));

原文地址:https://www.cnblogs.com/andrew209/p/9011617.html

时间: 2024-10-29 19:07:17

Java+selenium之WebDriver定位页面元素(二)的相关文章

selenium IDE(五)selenium 命令之定位页面元素

定位页面元素 对于很多selenium命令,target域是必须的.Target在web页面范围内识别UI元素,它使用locatorType=location的格式.在很多情况下,locatorType可以省略,下面举例方式来描述各种类型的locatorType. 假如,有如下一段HTML代码: html> <body> <form id= "loginForm" > <input name= "username" type= &

webdriver定位页面元素时使用set_page_load_time()和JavaScript停止页面加载

原文:https://my.oschina.net/u/2344787/blog/400507?p={{page}} 引言: 在使用webdriver的get方法打开页面时,可能页面需要加载的元素较多导致加载时间很长,而时间过长会导致后面的操作无法进行,甚至直接报错:所以在页面加载到一定时间,实际需要定位的元素很大可能上已经加载出来时,需要停止页面的加载,进而进行下面的操作: 例如:get 汽车之家页面时会等待很长时间,其实页面基本元素都已加载,可进行后续操作 可以通过set_page_load

Python selenium根据class定位页面元素

在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写id属性.通常一段html代码如下: 1 <div class="sui-tips s-isindex-wrap sui-tips-exceedtipnews" style="display: none; width: auto;"><div class="sui-tips-arrow"

Selenium with Python 003 - 页面元素定位

WebUI自动化,首先需要定位页面中待操作的元素,然后进行各种事件操作,这里我们首先介绍Selenium Python 如何定位页面元素,WebDriver 提供了一系列的方法. 定位单个页面元素(返回单个元素对象) find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag

java selenium webdriver实战 页面元素定位

自动化测试实施过程中,测试程序中常用的页面操作有三个步骤 1.定位网页上的页面元素,并存储到一个变量中 2.对变量中存储的页面元素进行操作,单击,下拉或者输入文字等 3.设定页面元素的操作值,比如,选择下拉列表中的那个下拉列表或者输入框中输入什么值 其中定位页面元素是三步骤的第一步,本篇介绍常用的定位方法 webDriver对象的findElement函数用于定位一个页面元素,findElements函数用户定位多个页面元素,定位的页面元素使用webElement对象进行存储 常用的方法有: 1

【selenium学习笔记】webdriver进行页面元素定位

[selenium学习笔记]webdriver进行页面元素定位 进行Web页面自动化测试,对页面上的元素进行定位和操作是核心.而操作又是以定位为前提的,因此,对页面元素的定位是进行自动化测试的基础. 页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等.webdriver就是利用元素的这些属性来进行定位的. 可以用于定位的常用的元素属性: id name class name tag name link text partial link te

Python3.x:Selenium中的webdriver进行页面元素定位

Python3.x:Selenium中的webdriver进行页面元素定位 页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等.webdriver就是利用元素的这些属性来进行定位的. 可以用于定位的常用的元素属性: id name class name tag name link text partial link text xpath css selector 对应于webdriver中的定位一个元素方法分别是: driver.find_e

请教:日期选择框,selenium如何定位页面元素

请教,下面的html,如何定位页面元素(年.月),试了好多方法都不可以 <div class="inputRow"> <span>购车日期</span> <input id="buyDate" type="hidden" name="buyDate" value="2013-12"> <span id="year__jQSelect0"

定位页面元素之xpath详解以及定位不到测试元素的常见问题

一.定位元素的方法 id:首选的识别属性,W3C标准推荐为页面每一个元素设置一个独一无二的ID属性, 如果没有且很难找到唯一属性,解决方法:(1)找开发把id或者name加上.如果不行,解决思路可以是: 1. 找到该按钮的特征,例如按钮的文字是 submit: 2. 用XPath定位,可以这样写://button[@value='submit'].(注意是单引号!!) name:和id一致 ClassName:对某些具有相同类的元素一网打尽的好方法 link text 和 partial lin