selenium查找文本_在Selenium中查找具有链接文本和部分链接文本的元素

selenium查找文本

Selenium中CSS定位器是一个基本概念,每个旨在使用Selenium执行自动化测试的测试人员都应该意识到这一点。 在Selenium中充分使用CSS定位器可以帮助您以更高效,更彻底的方式执行测试。 我从7年以来一直从事自动化测试行业,而且我经常观察到测试人员在使用Selenium执行自动化测试时 ,往往会忘记每个CSS定位器的用途。 新生很难理解他们,经验丰富的测试人员经常会使用几个选择器在使用Selenium执行自动化测试时在网页上定位元素。

有时候,我看到经验丰富的自动化测试人员会花更长的时间查找元素,因为他们习惯于坚持自己喜欢的定位器。 这就是为什么我认为我会为Selenium中CSS定位器提供一个教程系列,以帮助萌芽的自动化测试人员提出这些定位器的战略实现。 对于我们这些经验丰富的人来说,这将是一个快速而又好的总结。

当我们使用Selenium执行自动化测试时,本文将介绍链接文本和部分链接文本的实际实现。 任何Web应用程序上的链接都可以帮助查找文本完全匹配或部分匹配的元素。 使用Selenium中的链接文本和部分链接文本,我们将能够找到这两个匹配项。 这是我关于Selenium中CSS Locator的系列教程的最后一篇文章。

您可以查看有关Selenium中不同CSS定位器的其他文章,这些文章可通过多种方式帮助您定位元素:

  • Selenium中的ID定位器
  • Selenium中的名称定位器
  • Selenium中的类名定位器
  • Selenium中的标记名定位器
  • Selenium中CSS选择器
  • Selenium中的XPath

如果您是Selenium的高级或中级实践者,那么您可以喜欢上面提到的专门文章。 并获得我们的完整指南,以帮助您说明Selenium中CSS定位器的实际演示。

查看Selenium WebDriver中每个CSS定位器的完整指南,并附带示例

如此说来,让我们了解如何利用Selenium中的链接文本和部分链接文本来定位网页上的元素。

在Selenium中使用链接文本查找元素

为了使用Selenium中的链接文本访问链接,使用下面引用的代码:
driver.findElement(By.linkText("this is a link text"));

注意:在存在多个具有相似文本的链接的情况下,它将自动选择第一个。

让我们参考下面的代码片段以了解用例。 在这种情况下,我们以Airbnb为例,通过链接匹配单击果阿的任何一次停留。

部分链接文字

带有链接文本的div元素的引用屏幕快照:

部分链接文字
 import java.util.concurrent.TimeUnit;   import org.openqa.selenium.By;  import org.openqa.selenium.WebDriver;  import org.openqa.selenium.chrome.ChromeDriver;  import org.testng.Assert;   public class LinkText {  public static void main(String[] args) { // TODO Auto-generated method stub     System.setProperty( "webdriver.chrome.driver" , ".\\ChromeDriver\\chromedriver.exe" ); WebDriver driver= new ChromeDriver(); driver.manage().timeouts().implicitlyWait( 20 , TimeUnit.SECONDS);     driver.manage().window().maximize();     //Opening the air bnb Goa homestays page driver.get( " https://www.airbnb.co.in/s/Goa/all " );     //locating an element via link text in Selenium now, and clicking on that stay driver.findElement(By.linkText( "Standard One Bedroom Suite with Pool & Jacuzzi" )).click();  driver.quit(); }   } 

我们也可以使用Selenium中的部分链接文本来定位同一元素。 让我们检查一下!

在Selenium中使用部分链接文本定位元素

Selenium中的部分链接文本是通过链接定位元素的另一种方法。 从Selenium中的链接文本到部分链接文本的唯一区别是, 它不会查看字符串值的完全匹配,而是会进行部分匹配 。 因此,如果您要查找具有更大文本长度的链接,则可以避免只使用部分链接文本,而不必使用Selenium中的整个链接文本。

通过部分链接文本定位元素的语法。

driver.findElement(By.partialLinkText ("link text"));

参照上述情况,以下是与Airbnb相同停留时间的部分链接文本的代码段:

 import java.util.concurrent.TimeUnit;   import org.openqa.selenium.By;  import org.openqa.selenium.WebDriver;  import org.openqa.selenium.chrome.ChromeDriver;  import org.testng.Assert;   public class PartialLinkText {  public static void main(String[] args) { // TODO Auto-generated method stub     System.setProperty( "webdriver.chrome.driver" , ".\\ChromeDriver\\chromedriver.exe" ); WebDriver driver= new ChromeDriver(); driver.manage().timeouts().implicitlyWait( 20 , TimeUnit.SECONDS);     driver.manage().window().maximize();     //Opening the air bnb Goa homestays page driver.get( " https://www.airbnb.co.in/s/Goa/all " );     //locating an element via link text now and clicking on that stay driver.findElement(By.partialLinkText( "Pool & Jacuzzi" )).click();  driver.quit(); }   } 

有多个匹配结果时如何选择正确的链接文本?

在Selenium中使用部分链接文本时,要记住的唯一一点是要使部分链接文本与页面上的多个链接文本匹配。 在这种情况下,请确保您单击的是所需的。

让我们考虑另一种情况,当我们使用Selenium执行自动化测试时,您最终会匹配多个链接文本,并希望仅针对指定的链接文本。 对于果阿岛的相同寄宿家庭,我试图在其中将带有部分文本的元素定位为“池”。 因此,策略将是找出有许多住宿的家庭,其中有游泳池,然后单击所需的住宿,然后发布。 以下参考代码段表示如何使用Selenium中的部分链接文本从多个匹配结果中选择正确的目标。

 import java.util.List;  import java.util.concurrent.TimeUnit;   import org.openqa.selenium.By;  import org.openqa.selenium.WebDriver;  import org.openqa.selenium.WebElement;  import org.openqa.selenium.chrome.ChromeDriver;  import org.testng.Assert;   public class LinkText {  public static void main(String[] args) { // TODO Auto-generated method stub     System.setProperty( "webdriver.chrome.driver" , ".\\ChromeDriver\\chromedriver.exe" ); WebDriver driver= new ChromeDriver(); driver.manage().timeouts().implicitlyWait( 20 , TimeUnit.SECONDS);     driver.manage().window().maximize();     //Opening the air bnb Goa homestays page driver.get( " https://www.airbnb.co.in/s/Goa/all " );     //locating an element via link text now and clicking on that stay List<WebElement> poolNumber=driver.findElements(By.partialLinkText( List<WebElement> poolNumber=driver.findElements(By.partialLinkText( "Pool" ));     //find the number of links with the text as pool int numberOfStaysWithPool= poolNumber.size();     System.out.println(numberOfStaysWithPool);     for ( int k= 0 ; k<numberOfStaysWithPool; k++) { //printing all those links System.out.println(poolNumber.get(k).getText());       }     //select the luxury three bedroom apartment link poolNumber.get( 2 ).click(); poolNumber.get( ).click();  driver.quit(); }   } 
部分链接文字

在上面的代码片段中,我使用了findElements,因为我应该接收多个带有部分文本的Web元素作为“池”。 现在,使用索引,我已经导航到想要单击的链接之一。 很简单,不是吗?

注意:链接文本和部分链接文本对于Selenium中CSS定位器都是区分大小写的。

例如,假设一个链接“ 注册 ”存在一个主页上的类似链接“ 注册 ”是出现在首页上的页脚。 在这种情况下,如果要使用链接文本“ REGISTER ”进行查找,它将自动在页脚而不是另一个中选择链接。

类名定位器

Selenium中的链接文本和部分链接文本定位器仅适用于给定Web应用程序的链接。 如果要查找链接以外的元素,则不能在Selenium中使用链接文本或部分链接文本定位器。 如果您正在处理应用程序中的链接,那么这也许是最好的定位器。 测试愉快!

部分链接文字

翻译自: https://www.javacodegeeks.com/2019/06/find-elements-link-text-partial-link-text-selenium.html

selenium查找文本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Servlet文件上传/上传文件功能的实现(commons-fileupload)

文章目录正常步骤使用 commons-fileupload.jar 实现文件上传正常步骤 step1 在 form 中,设置 method"post",设置 enctype"multipart/form-data"。enctype 属性用于设置表单的编码方式,对于文件上传,必须设置成"mul…

python单行箭头_在Python中,如何让箭头尖在指定的坐标处开始/结束?

我试图使用matplotlib的注释绘制两端带有箭头的直线。但当我绘制它们时,箭头的尖端并没有在图中所示的指定坐标处开始或结束。提示应该从0.6和0.8开始和结束,但它们不是。在可复制代码import matplotlib.pyplot as pltfig plt.figure(figsize (5, 5))p…

MySQL 8.x 修改root用户密码/修改密码/重置密码/忘记密码(为了避免掉坑,值得收藏)

操作系统:CentOS Linux release 8.2.2004 (Core) MySQL版本:mysql Ver 8.0.26 for Linux on x86_64 (Source distribution) 忘记 root 用户的密码,然后我以无需“权限验证”的方式启动 MySQL 服务器(具体方法参考这里&#xff09…

sql 账号查询一个表勾选那个权限_Spring Cloud微服务架构中的数据权限DataPermision实现方案...

Spring Cloud微服务架构中的数据权限DataPermision实现方案一、出现原因在Spring Cloud的微服务架构中,常见的权限控制除了菜单权限外,还有数据权限DataPermision。菜单权限主要用于控制用户角色所能访问的菜单以及页面按钮的显示与否,而数据…

科学计数法详解

1.4013E-45 1.4013 * 10 的 -45 次方 1.4013 * 10 的 45 次方的倒数 1.4013 * 10 的 45 次方分之一 1.4013 * 1/10 的 45 次方。 算术表达式:1.4013E-45 1.4013 * 10−4510^{-45}10−45 1.4013 * 11045\frac{1}{10^{45}}10451​ 1.4013 * (110)45(\frac{1}{…

程序中抛出空指针异常_从Java应用程序中消除空指针异常

程序中抛出空指针异常这篇文章简要介绍了Java 8的最有用但又“毫不夸张”的功能。 程序员花费了无尽的时间来纠正最常见但最危险的错误之一,即Null指针异常。 空指针异常会导致我们的应用程序意外中断,并且很难预先检测到。 在许多情况下,…

python token post403原因_Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法...

Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误解决方法1:注释掉此段代码,即可。缺点:导致Django项目完全无法防止csrf攻击解决方法2&…

BigDecimal详解

文章目录为什么要使用BigDecimal构造方法加减乘除舍入模式(对BigDecimal进行截取)取余数比较大小BigDecimal 转 StringBigDecimal与double和int转换格式化显示 BigDecimal使用DecimalFormat使用String.format()总结为什么要使用BigDecimal double类型的…

java序列化和反序列化_Java恶意序列化背后的历史和动机

java序列化和反序列化与Java的序列化机制相关的问题已广为人知。 有效的Java 1st Edition (第10章)和有效的Java 2nd Edition (第11章)的整个最后一章都专门讨论Java的序列化主题。 Effective Java 3rd Edition (第12章…

python元祖迭代_如何在Python中迭代元组的堆栈

我尝试在Python中使用预定义为的DepthFirstSearch类实现DepthFirstSearch算法:class Stack:def __init__(self):self.list []def push(self,item):self.list.append(item)def pop(self):return self.list.pop()def isEmpty(self):return len(self.list) 0我还有一…

Request的学习笔记(属Servlet学习课程)

文章目录获取请求消息数据1.获取请求行的数据2.获取请求头的数据3.获取请求体的数据4.获取其它的数据4.1.获取请求参数的通用方式中文乱码问题4.2.请求转发4.3.共享数据4.4.获取 ServletContext 对象继承与实现体系浏览器访问服务器时,会将用户提交的参数数据、协议…

aws lambda_AWS Lambda事件源映射:使您的触发器混乱无序

aws lambda最近,我们为Sigma Cloud IDE上的无服务器项目引入了两个新的AWS Lambda事件源(触发类型): SQS队列和DynamoDB流 。 (是的,AWS在几个月前就向他们介绍了;但是我们仍然是一个很小的团队…

python curl模块_python pycurl模块

一、pycurl概述PycURl是一个C语言写的libcurl的python绑定库。libcurl 是一个自由的,并且容易使用的用在客户端的 URL 传输库。它的功能很强大,在PyCURL的主页上介绍的支持的功能有:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and …

MySQL数据库创建用户root@%

步骤: 以 rootlocalhost 登录数据库,即先登录数据库所在的主机,再以 root 用户登录数据库: [roothtlwk0001host ~]# mysql -uroot -p123456必须先删除原来的 root% 用户: mysql> drop user root%; Query OK, 0 r…

第三方工具监控java进程_前9个免费的Java进程监视工具以及如何选择一种

第三方工具监控java进程这样就可以运行Java代码了。 也许它甚至可以在生产服务器上运行。 当您做好工作后,我们得到了好消息和令人讨厌的消息。 令人讨厌的消息是,现在开始调试。 就是进行调试和应用程序性能监视。 这意味着您不仅需要查看编写的代码&a…

python中的numpy函数算相关系数_NumPy ufunc通用函数

NumPy 提供了两种基本的对象,即 ndarray 和 ufunc 对象。前面几节已经介绍了 ndarray,本节将介绍 Numpy。ufunc 是 universal function 的缩写,意思是“通用函数”,它是一种能对数组的每个元素进行操作的函数。许多 ufunc 函数都是…

MySQL 8.x 以前的版本修改密码规则

查看密码相关变量: mysql> show variables like validate_password%; ---------------------------------------------- | Variable_name | Value | ---------------------------------------------- | validate_password_dictionary_f…

aws mfa 认证_如何为您的AWS账户设置多因素身份验证(MFA)

aws mfa 认证第1步 : 转到AWS控制台并使用您的用户名密码登录。 第2步 : 转到服务-> IAM 第三步: 单击您的根帐户上的激活MFA 第4步 : 在步骤3中,点击屏幕上的管理MFA按钮。 步骤5: 单击分配…

python具体工作内容_有没有人知道公司里用python工作的内容有什么

2018-07-11 回答python的特色 简单 python是一种代表简单主义思想的语言。阅读一个良好的python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。 …

如何导入hadoop源码到eclipse

需要进一步学习hadoop、需要看看内部源码实现,因此需要将hadoop源码导入都eclipse中。 简单总结一下,具体步骤如下: 首先确保已经安装了git、maven3、protobuf2.5、如果没有安装需要提前安装一下 0、preliminary linux distribution(我的…