webdriver提供了强大的元素定位方法,支持以下三种方法。
单个对象的定位方法
多个对象的定位方法
层级定位
注意:
selenium-webdriver通过findElement()\findElements()等find方法调用"By"对象来定位和查询元素。By类只是提供查询的方式进行分类。findElement返回一个元素对象否则抛出异常,findElements返回符合条件的元素 List,如果不存在符合条件的就返回一个空的list。
1.定位单个对象
webdriver使用了以下方法定位元素:
* By.className(className))
* By.cssSelector(selector)
* By.id(id)
* By.linkText(linkText)
* By.name(name)
* By.partialLinkText(linkText)
* By.tagName(name)
* By.xpath(xpathExpression)
1)使用className定位元素
定位的html文件:
2)使用cssSelector定位元素
定位的html文件:
3)使用id定位元素
定位的html文件:
4)使用name定位元素
定位的html文件:
5)使用tagname定位元素
定位的html文件:
6)使用xpath定位元素
定位的html文件:
7)使用linkText定位元素
定位的html文件:
8)使用partialLinkText定位元素
定位的html文件:
2.定位多个对象
其输出结果为:
3.层级定位
层级定位的思想是先定位父元素,然后再从父元素中精确定位出其我们需要选取的子元素。
层级定位一般的应用场景是无法直接定位到需要选取的元素,但是其父元素比较容易定位,通过定位父元素再遍历其子元素选择需要的目标元素,或者需要定位某个元素下所有的子元素。
定位的html文件:
输出结果为:
单个对象的定位方法
多个对象的定位方法
层级定位
注意:
selenium-webdriver通过findElement()\findElements()等find方法调用"By"对象来定位和查询元素。By类只是提供查询的方式进行分类。findElement返回一个元素对象否则抛出异常,findElements返回符合条件的元素 List,如果不存在符合条件的就返回一个空的list。
1.定位单个对象
webdriver使用了以下方法定位元素:
* By.className(className))
* By.cssSelector(selector)
* By.id(id)
* By.linkText(linkText)
* By.name(name)
* By.partialLinkText(linkText)
* By.tagName(name)
* By.xpath(xpathExpression)
1)使用className定位元素
定位的html文件:
<form action="/s" name="f"> <span class="s_ipt_wr"> <input type="text" class="s_ipt" maxlength="100" id="kw" name="wd" autocomplete="off"> </span> <input type="hidden" value="0" name="rsv_bp"><input type="hidden" value="3" name="rsv_spt"> <span class="s_btn_wr"> <input type="submit" onmouseout="this.className='s_btn'" onmousedown="this.className='s_btn s_btn_h'" class="s_btn" id="su" value="百度一下"> </span> <div id="sd_1350115810720" style="display: none;"></div> </form>
package selenium.test.googleSearch; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class BaiduFirefoxDriver { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); //页面跳转 driver.get("http://www.baidu.com/"); //根据className定位百度查询输入框 WebElement search=driver.findElement(By.className("s_ipt")); //输入查询条件classname search.sendKeys("classname"); } }
2)使用cssSelector定位元素
定位的html文件:
<form action="/s" name="f"> <span class="s_ipt_wr"> <input type="text" class="s_ipt" maxlength="100" id="kw" name="wd" autocomplete="off"> </span> <input type="hidden" value="0" name="rsv_bp"><input type="hidden" value="3" name="rsv_spt"> <span class="s_btn_wr"> <input type="submit" onmouseout="this.className='s_btn'" onmousedown="this.className='s_btn s_btn_h'" class="s_btn" id="su" value="百度一下"> </span> <div id="sd_1350115810720" style="display: none;"></div> </form>
package selenium.test.googleSearch; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class BaiduFirefoxDriver { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); //页面跳转 driver.get("http://www.baidu.com/"); //根据classSelector定位百度查询输入框 WebElement search=driver.findElement(By.cssSelector("#kw")); //输入查询条件classname search.sendKeys("classname"); } }
3)使用id定位元素
定位的html文件:
<form action="/s" name="f"> <span class="s_ipt_wr"> <input type="text" class="s_ipt" maxlength="100" id="kw" name="wd" autocomplete="off"> </span> <input type="hidden" value="0" name="rsv_bp"><input type="hidden" value="3" name="rsv_spt"> <span class="s_btn_wr"> <input type="submit" onmouseout="this.className='s_btn'" onmousedown="this.className='s_btn s_btn_h'" class="s_btn" id="su" value="百度一下"> </span> <div id="sd_1350115810720" style="display: none;"></div> </form>
package selenium.test.googleSearch; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class BaiduFirefoxDriver { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); //页面跳转 driver.get("http://www.baidu.com/"); //根据id定位百度查询输入框 WebElement search=driver.findElement(By.id("kw")); //输入查询条件classname search.sendKeys("classname"); } }
4)使用name定位元素
定位的html文件:
<form action="/s" name="f"> <span class="s_ipt_wr"> <input type="text" class="s_ipt" maxlength="100" id="kw" name="wd" autocomplete="off"> </span> <input type="hidden" value="0" name="rsv_bp"><input type="hidden" value="3" name="rsv_spt"> <span class="s_btn_wr"> <input type="submit" onmouseout="this.className='s_btn'" onmousedown="this.className='s_btn s_btn_h'" class="s_btn" id="su" value="百度一下"> </span> <div id="sd_1350115810720" style="display: none;"></div> </form>
package selenium.test.googleSearch; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class BaiduFirefoxDriver { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); //页面跳转 driver.get("http://www.baidu.com/"); //根据name定位百度查询输入框 WebElement search=driver.findElement(By.name("wd")); //输入查询条件classname search.sendKeys("classname"); } }
5)使用tagname定位元素
定位的html文件:
<form action="/s" name="f"> <span class="s_ipt_wr"> <input type="text" class="s_ipt" maxlength="100" id="kw" name="wd" autocomplete="off"> </span> <input type="hidden" value="0" name="rsv_bp"><input type="hidden" value="3" name="rsv_spt"> <span class="s_btn_wr"> <input type="submit" onmouseout="this.className='s_btn'" onmousedown="this.className='s_btn s_btn_h'" class="s_btn" id="su" value="百度一下"> </span> <div id="sd_1350115810720" style="display: none;"></div> </form>
package selenium.test.googleSearch; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class BaiduFirefoxDriver { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); //页面跳转 driver.get("http://www.baidu.com/"); //根据tagName定位百度查询输入框 WebElement search=driver.findElement(By.tagName("input")); //输入查询条件classname search.sendKeys("classname"); } }
6)使用xpath定位元素
定位的html文件:
<form action="/s" name="f"> <span class="s_ipt_wr"> <input type="text" class="s_ipt" maxlength="100" id="kw" name="wd" autocomplete="off"> </span> <input type="hidden" value="0" name="rsv_bp"><input type="hidden" value="3" name="rsv_spt"> <span class="s_btn_wr"> <input type="submit" onmouseout="this.className='s_btn'" onmousedown="this.className='s_btn s_btn_h'" class="s_btn" id="su" value="百度一下"> </span> <div id="sd_1350115810720" style="display: none;"></div> </form>
package selenium.test.googleSearch; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class BaiduFirefoxDriver { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); //页面跳转 driver.get("http://www.baidu.com/"); //根据xpath定位百度查询输入框 WebElement search=driver.findElement(By.xpath("//*[@id='kw']")); //输入查询条件classname search.sendKeys("classname"); } }
7)使用linkText定位元素
定位的html文件:
<a href="http://baike.baidu.com" name="tj_baike">百科</a>
package selenium.test.googleSearch; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class BaiduFirefoxDriver { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); //页面跳转 driver.get("http://www.baidu.com/"); //根据linkText定位 WebElement link=driver.findElement(By.linkText("百科")); link.click(); } }
8)使用partialLinkText定位元素
定位的html文件:
<a href="http://baike.baidu.com" name="tj_baike">百科</a>
package selenium.test.googleSearch; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class BaiduFirefoxDriver { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); //页面跳转 driver.get("http://www.baidu.com/"); //根据linkText定位 WebElement link=driver.findElement(By.linkText("科")); link.click(); } }
2.定位多个对象
package selenium.test.googleSearch; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class BaiduFirefoxDriver { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); //页面跳转 driver.get("http://www.baidu.com/"); //定位百度快捷功能链接,并返回其值 List<WebElement> links=driver.findElements(By.id("nv")); for(WebElement e:links){ System.out.println(e.getText()); } } }
其输出结果为:
新 闻 网 页 贴 吧 知 道 MP3 图 片 视 频 地 图
3.层级定位
层级定位的思想是先定位父元素,然后再从父元素中精确定位出其我们需要选取的子元素。
层级定位一般的应用场景是无法直接定位到需要选取的元素,但是其父元素比较容易定位,通过定位父元素再遍历其子元素选择需要的目标元素,或者需要定位某个元素下所有的子元素。
定位的html文件:
<p id="nv"> <a href="http://news.baidu.com" name="tj_news">新 闻</a> <b>网 页</b> <a href="http://tieba.baidu.com" name="tj_tieba">贴 吧</a> <a href="http://zhidao.baidu.com" name="tj_zhidao">知 道</a> <a href="http://mp3.baidu.com" name="tj_mp3">MP3</a> <a href="http://image.baidu.com" name="tj_img">图 片</a> <a href="http://video.baidu.com" name="tj_video">视 频</a> <a href="http://map.baidu.com" name="tj_map">地 图</a> </p>
package selenium.test.googleSearch; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.*; public class BaiduFirefoxDriver { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); //页面跳转 driver.get("http://www.baidu.com/"); //先定位父元素nv WebElement p=driver.findElement(By.id("nv")); //再根据父元素定位子元素 WebElement link=p.findElement(By.name("tj_zhidao")); //打印子元素的link值 System.out.println(link.getText()); } }
输出结果为:
知 道
发表评论
-
七、浏览器操作
2012-10-13 15:59 1335以firefox为例,其他浏览器一样 1.启动浏览器 详见: ... -
六、ChromeDriver
2012-10-13 15:23 26188Chrome Driver是Chromium项目自己支持和维护 ... -
【转】WebDriver理论
2012-10-13 13:54 1557Selenium2.0 = Selenium1.0 + Web ... -
五、FirefoxDriver和InternetExplorerDriver
2012-10-13 13:50 9625FirefoxDriver FirefoxDriver能够直接 ... -
FirefoxDriver和InternetExplorerDriver
2012-10-13 13:49 0FirefoxDriver FirefoxDriver能够直接 ... -
四、使用FirefoxDriver时报错Make sure firefox is installed问题
2012-09-28 22:05 14718FirefoxDriver调用firefox浏览器的安装路径应 ... -
三、HtmlUnitDriver
2012-09-28 21:18 20205优点:HtmlUnitDriver不会实际打开浏览器,运行速度 ... -
二、一个简单的官方实例
2012-09-27 21:42 1644官方webdriver文档中简单的webdriver应用实例 ... -
一、Selenium2下载及使用
2012-09-18 21:35 133191.下载Selenium Client Servers包 在 ...
相关推荐
Selenium WebDriver 中使用 By.Xpath 快速定位页面元素 Selenium WebDriver 是一个自动化测试工具,可以模拟用户交互来对 Web 应用程序进行测试。其中,定位页面元素是自动化测试的关键步骤。By.Xpath 是一种快速...
firefox的插件,定位页面元素。
### Selenium八种定位元素详解 #### 一、引言 Selenium是一款强大的自动化测试工具,广泛应用于Web应用的测试工作中。在使用Selenium进行自动化测试的过程中,定位网页元素是核心任务之一。Selenium提供了多种定位...
在提供的压缩包文件"jQuery实现页面元素智能定位"中,可能包含了示例代码、教程或者工具,帮助开发者理解和实践这个过程。通过学习和应用这些知识,你可以创建具有智能定位功能的网页元素,提升用户体验。 总的来说...
Javascript 元素位置、大小、鼠标定位操作 本文将详细介绍 Javascript 中元素位置、大小、鼠标定位操作相关的知识点,包括事件对象、DOM 对象、Style 对象等提供的相关属性和方法。 一、事件对象 Event 事件对象 ...
本压缩包"页面元素xpath定位工具.rar"提供了一个名为DragonTestingXpathHelperV1.0.2的工具,该工具专门用于帮助用户快速、准确地找到网页上的可点击元素和输入字段,并自动生成对应的XPath表达式。 在网页自动化...
定位页面元素的操作是自动化测试中不可或缺的一步,如果无法定位到页面元素,后续的操作就无法进行。因此,定位元素是自动化测试过程中的重要步骤。 Selenium提供了多种方法来定位页面元素,常用的定位方法包括: ...
为了更好地学习WebDriver的八种定位元素的方式,我们使用附件中的注册页面来练习自动化脚本的设计。 博文链接:https://blog.csdn.net/weixin_44679832/article/details/103807698
本文将详细介绍如何使用Selenium根据class定位页面元素。 首先,Selenium提供了`find_element_by_class_name`方法,用于根据单一的class名称来定位元素。例如,如果HTML代码中有如下的结构: ```html ... ``` ...
### 第八章 定位网页元素 #### 一、定位属性概述 本章节主要介绍了CSS中的定位机制,包括`position`属性的四个不同值:`static`、`relative`、`absolute`以及`fixed`。此外,还提到了`z-index`属性用于控制元素在...
在进行自动化测试时,需要注意元素的稳定性,避免因为页面结构变动导致定位失效。同时,对于动态加载的元素,可能还需要使用到`WebDriverWait`来进行等待,确保元素加载完成后再进行操作。 在提供的压缩包文件`...
本章的学习任务包括制作带按钮的轮播广告、模拟彩票购买页面、图书排行榜页面和美食推荐页面,这些都需要运用到定位技术来布局和控制各元素的显示。 5. **练习与问题解答** - 设置浮动时,`left`让元素向左浮动,...
selenium之元素定位,共八种定位方法,以百度搜索框为例子进行讲解
让我们通过完成一下的实例来了解一下如何在不使用无用的class和id属性的情况下利用CSS3定位页面元素。 相关下载:CSS3.0参考手册下载使用一个唯一的日志(post)ID定位所有日志 wordpress提供给我们一种包含了ID的每篇...
selenium+java操作UI时,对界面元素进行定位与操作及实例
例如,在一个绝对定位的容器内,我们可以使用相对定位的元素进行精准布局,这样容器内的元素位置就可以相对于容器本身进行定位,而不会受到其他页面元素的影响。具体到提供的文档内容中,开发人员可以创建一个div...
在网页设计中,CSS(Cascading Style Sheets)定位是至关重要的一个方面,它允许开发者精确控制网页元素在页面上的布局。本篇文章将详细讲解CSS中的五个定位属性:`static`、`relative`、`absolute`、`fixed`以及`...
- 定义元素:在Selenium中,我们通常使用`find_element_by_*`系列方法来定位页面元素,如`find_element_by_id`, `find_element_by_name`, `find_element_by_xpath`等。这些元素可以封装在页面对象类中作为属性。 -...