Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何在Selenium WebDriver中查找元素?(一)

如何在Selenium WebDriver中查找元素?(一)

作者头像
用户7466307
发布于 2020-06-24 08:19:40
发布于 2020-06-24 08:19:40
6.1K00
代码可运行
举报
运行总次数:0
代码可运行
在Selenium WebDriver中查找元素:“ FindElement”和“ FindElements”之间的区别

查找元素

查找元素

如果定位器发现了多个Web元素,则返回第一个匹配的Web元素

返回匹配的Web元素列表

如果找不到元素,则抛出NoSuchElementException

如果找不到匹配的元素,则返回一个空列表

此方法仅用于检测唯一的Web元素

此方法用于返回匹配元素的集合。

有多种方法可以唯一地标识网页中的一个Web元素,例如ID,名称,类名,链接文本,部分链接文本,标记名和XPATH。

在Selenium WebDriver中查找元素:定位器策略/定位器类型

定位器策略可以是以下用于查找元素或FindElements的类型之一–

  • ID
  • Name
  • ClassName
  • TagName
  • Link Text/Partial Link Text
  • CSS Selector
  • XPATH Selector

现在让我们尝试看看如何使用这些策略中的每一个来查找元素或元素。首先,我们将了解如何找到

通过ID查找

每个元素的ID都是唯一的,因此这是使用ID Locator定位元素的常用方法。这是检测元素的最常见最快,最安全的方法。建议网站开发人员避免使用非唯一ID或动态生成的ID,但是某些MVC框架(如– ADF)可能会导致页面具有动态生成的ID。

如果任何网站具有非唯一ID或具有动态生成的ID,则不能使用此策略唯一地查找元素,而是将返回与定位器匹配的第一个Web元素。我们将如何克服这种情况,将在XPATH / CSS选择器策略中进行说明。

句法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class LocateByID
{
public static void main (String [] args)
{
// Open browser
WebDriver driver = new FirefoxDriver();
//instance of Chrome | Firefox | IE driver
driver.get(<url>);
// Open Application
WebElement elm = driver.findElement(By.id("pt1:_UIShome::icon"));
// will raise NoSuchElementException if not found
elm.click()
//e.g- click the element
}
}

按名称查找

此方法类似于“按ID查找”,不同之处在于驱动程序将尝试通过“名称”属性而不是“ id”属性来查找元素。

句法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class LocateByName
{
public static void main (String [] args)
{
// 打开浏览器
WebDriver driver = new FirefoxDriver();
//Chrome的实例| Firefox | IE驱动
driver.get(<url>);
// 输入URL地址
WebElement elm = driver.findElement(By.name("name"));
elm.sendKeys("Hi");
//例如-在检测到的字段中键入Hi
}
}

现在,让我们继续前进,了解如何使用className在Selenium中查找元素。

按类别名称查找

此方法根据CLASS属性的值查找元素。更适用于查找具有针对它们定义的css类的多个元素。

句法:

driver.findElements(通过。的className (<locator_value>)); //对于元素列表

要么

driver.findElement(由className (<locator_value>)); //单个Web元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class LocateByClass {
 
public static void main (String [] args){
 
// 打开浏览器
 
WebDriver driver = new FirefoxDriver();//Chrome的实例| Firefox | IE驱动
 
driver.get(<url>);// URL地址
 
List<WebElement> links = driver.findElements(By.className("svg-bkgd01 xi8"));//如果元素不存在,则返回一个空列表
// 遍历列表并执行单个元素的逻辑
}}

现在让我们了解如何使用TagName在Selenium中查找元素。

按标签名称查找

此方法根据元素的HTML标记名称查找元素。如果不能通过Id / name / link / className / XPATH / CSS检测到特定的Web元素,则该方法未被广泛使用并用作最后的手段。

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.findElement(由tagName (<locator_value>)); //单个Web元素
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.findElements(由tagName (<locator_value>)); //用于元素列表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class LocateByTagName{
 
public static void main (String [] args){
 
// 打开浏览器
 
WebDriver driver = new FirefoxDriver();
 
driver.get(<url>);
 
WebElement ul = driver.findElement(By.id(<id>));
 
List<WebElement> links = ul.findElements(By.tagName("li"));
 
...
 
}
}

这是关于如何使用TagName查找元素的信息。让我们继续前进,看看如何使用LinkText查找元素

通过链接查找文本/部分链接

使用这种方法,可以找到带有链接名称或具有匹配的部分链接名称的 a ”标签( Link )的元素。此策略仅适用于查找包含文本值的类型锚标记的元素。

语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.findElement(通过linkText(<link_text>)); //单个Web元素
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.findElements(通过linkText(<link_text>)); //用于元素列表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

driver.findElement(按部分ialL inkText(<link_text>)); //单个Web元素

driver.findElements(通过partialLinkText(<link_text>)); //用于元素列表

这是关于如何使用LinkText在Selenium中查找元素的方法。现在,让我们了解如何使用CSS选择器在Selenium中查找元素。

通过CSS选择器查找

对于生成动态ID的网站(例如基于ADF的应用程序)或基于最新的JavaScript框架(例如–无法生成任何ID或名称的React js)构建的网站,无法使用ID /名称策略定位器来查找元素。相反,我们必须使用CSS选择器或XPath选择器。

XPATHSelector

XPATH使用标准的XML查询语法,因此更具可读性,学习曲线也不那么陡峭。但是,CSS选择器虽然具有更简单的语法支持,但不像XPATH和其他文档支持那样是标准的,与XPATH不同。

以下是CSS选择器的一些主要使用格式–

  • 标记和
  • ID
  • 标签和类别
  • 标签和属性
  • 标签,类和属性
  • 子字符串匹配
    • 以(^)开头
    • 以($)结尾
    • 包含(*)
  • 子元素
    • 直子
    • 子孩子
    • 第n个孩子

请参阅下面的屏幕截图–

带有ID的标签

css =标签#id

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class LocateByCSSSelector
{
 
    public static void main (String [] args)
{      
             WebDriver driver = new FirefoxDriver();
//instance of Chrome | Firefox | IE driver 
             driver.get(<url>); 
WebElement el = driver.findElement(By.cssSelector("input#pt1:r1:0:rt:1:r2:0:dynamicRegion1:1:AP1:inputText562::content"));
 
el.sendKeys("Location1");
 
}
 
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试test 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Selenium的组成及特点
 商品信息:className="p-name"      商品价格:className="p-price"
用户10196776
2022/11/20
1.6K0
Selenium的组成及特点
Selenium安装以及案例演示【Java爬虫】
下载驱动包 http://chromedriver.storage.googleapis.com/index.html
天蝎座的程序媛
2022/11/18
2K0
SeleniumWebDriver之FindElement和FindElements
与Web页面的交互需要用户定位Web元素。FindElement命令用于唯一地标识页面中的(单个)Web元素。然而,FindElements命令用于唯一地标识页面中的Web元素列表。 有多种方法可以标识页面中的Web元素,比如ID, Name, Class Name, Link Text, Partial Link Text, Tag名称和XPath。
软测小生
2019/09/12
2.6K0
SeleniumWebDriver之FindElement和FindElements
Selenium Webdriver 简易教程
Selenium RC和Selenium Webdriver是测试框架,提供多种语言的API。不同的是,Selenium Webdriver以一种更底层、更灵活的方式来操作浏览器,并不仅仅使用javascript。这样它可以绕开浏览器的沙箱限制,实现Selenium RC不支持的框架、弹出窗口、页面导航、下拉菜单、基于AJAX的UI元素等控件的操作。以及,Selenium Webdriver不需要本地服务器。
ApacheCN_飞龙
2019/02/15
5.2K0
《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)
按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName。看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了解一些前端的基本知识。有了前端知识,做元素定位会很轻松,同样写网络爬虫也很有帮助,话题扯远了,回到Selenium自动化测试。tagName是DOM结构的一部分,其中页面上的每个元素都是通过输入标签,按钮标签或锚定标签等标签定义的。每个标签都具有多个属性,例如ID,名称,值类等。就其他定位符而言在Selenium中,我们使用了标签的这些属性值来定位元素。 对于Selenium中的tagName定位器,我们将仅使用标签名称来标识元素。
北京-宏哥
2021/08/05
2K0
如何在Selenium WebDriver中查找元素?(二)
在我们的测试自动化代码中,我们通常更喜欢使用id,名称,类等这些定位符。但是,有时我们在DOM中找不到它们中的任何一个,而且有时某些元素的定位符在DOM中会动态变化。在这种情况下,我们需要使用智能定位器。这些定位器必须能够定位复杂且动态变化的Web元素。
用户7466307
2020/06/24
2.9K0
selenium学习笔记
Selenium是一个自动化测试工具,用于在Web应用程序中模拟用户操作。它提供了一组API,可以通过编程方式控制浏览器,并模拟用户的交互行为,例如点击、输入文本和导航等。Selenium支持多种编程语言,包括Java、C#、Python、Ruby、JavaScript等,并可以在多个浏览器和操作系统上运行测试。Selenium的目标是帮助测试人员自动化测试过程,提高测试效率和测试质量。
九转成圣
2024/05/29
2010
selenium学习笔记
Selenium面试题
自动化测试使用自动化工具来编写和执行测试用例,执行自动化测试套件不需要人工参与。测试人员更喜欢自动化工具来编写测试脚本和测试用例,然后组合成测试套件。 自动化测试允许使用专门的工具来自动执行手动设计的测试用例,而无需任何人工干预。自动化测试工具可以访问测试数据,控制测试的执行并将实际结果与预期结果进行比较。因此,生成被测系统的详细测试报告。
测试小兵
2023/03/16
8.6K0
Selenium面试题
selenium2java基本方法二次封装
本人在使用selenium做测试的时候,封装了很多方法,由于工作原因估计很长时间不会更新方法库了,中间关于js的部分还差一些没有完善,其中设计接口的部分暂时就先不发了,以后有机会在更新。
FunTester
2019/09/10
2K0
【自动化测试】【Jest-Selenium】(04)—— Selenium WebDriver
Selenium is an umbrella project(一揽子项目) for a range of tools and libraries that enable and support the automation of web browsers.
WEBJ2EE
2020/10/09
8180
【自动化测试】【Jest-Selenium】(04)—— Selenium WebDriver
selenium-webdriver|3 API之元素定位
HTML是超文本标签语言,主要包括三大部分:文档声明部分、<head>头部部分、<body>主体部分
测试邦
2019/07/31
1.6K0
selenium-webdriver|3 API之元素定位
Selenium WebDriver脚本Java代码示例
本篇文章将介绍如下内容: WebDriver代码 Selenium定位UI元素 Selenium常用命令 Get命令 --Get Commands 导航(跳转)命令-Navigate commands Close和Quite关闭和退出浏览器窗口 切换内嵌框架Frame 切换到弹出框
软测小生
2019/09/04
5.3K0
Selenium WebDriver脚本Java代码示例
Selenium 3 升级到 Selenium 4 应注意哪些
在自动化技术的不断发展过程中,我们往往也会遇到或做过自动化版本升级的任务,也会遇到各种各样的问题。
wangmcn
2022/07/26
1.6K0
Selenium 4以后,再不相见的API
Selenium4前线快报中提到了Selenium 4的最新进展,伴随着Selenium 4各种功能的增强,最近的版本中也包含了一些旧API的更改和启用。如果你准备从Selenium 3升级到Selenium 4,那么最好留意这些更新。
FunTester
2021/08/18
1.5K0
自动化测试selenium在小公司的成功实践
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,
顾翔
2019/12/12
1.5K0
自动化测试selenium在小公司的成功实践
【UI自动化-2】UI自动化元素定位专题
UI自动化的学习,个人认为应该分五步走:环境搭建、元素定位、特殊场景处理、框架设计与搭建、测试平台开发。第一步的环境搭建其实没什么难度,都是固定的套路。今天就来到了第二步的元素定位,可以说元素定位是整个UI自动化的基本功。 我查阅了大量的资料,在动手实践的基础上,整理总结了此文。
云深i不知处
2020/09/16
1.9K0
​Java自动化测试 (元素定位 23)
使用脚本断点调试定位是否正确是一个方法,当时在我的实际工作中,元素定位代码的封装较深,所以修改查询元素的内容较麻烦,所以直接使用Xpath Helper可以方便的进行开发前的测试。不管是爬虫爬去页面内容还是自动化测试都很实用。
zx钟
2020/09/04
1.1K0
​Java自动化测试 (元素定位 23)
WEB界面测试实践之Selenium WebDriver
工作中需要对web界面进行测试,在网上找了找解决方案,最终找到了Selenium WebDriver。 WebDriver简介 The primary new feature in Selenium 2.0 is the integration of the WebDriver API. WebDriver is designed to provide a simpler, more concise programming interface in addition to addressing some
jeremyxu
2018/05/10
3.9K0
自动化测试如此容易!多语言自动化测试框架 Selenium 编程(C#篇)
Selenium 是功能强大的自动化测试工具集,是支持 Web 浏览器自动化的一系列工具和库的总括项目,一共包括以下三个项目:
痴者工良
2023/03/11
3.8K0
自动化测试如此容易!多语言自动化测试框架 Selenium 编程(C#篇)
我是这么学习Selenium元素定位操作的
相信很多做web自动化测试的同学都深有体会,其本质也就是通过操作页面元素对象来模拟用户操作行为,那么首先我们先找到这些元素对象,然后才能进行一系列操作。
软件测试君
2019/07/15
7340
我是这么学习Selenium元素定位操作的
相关推荐
Selenium的组成及特点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验