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

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

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

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

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

  • Selenium中的ID定位器
  • 硒中的名称定位器
  • 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中的整个链接文本。

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

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 ”,而主页的页脚中存在类似的链接“ REGISTER ”。 在这种情况下,如果要使用链接文本“ REGISTER ”进行查找,它将自动在页脚而不是另一个中选择链接。

类名定位器

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

部分链接文字

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

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

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

相关文章

浅析C++的三大循环-以100以内的质数求解为例

简介 C三大循环分别是while、do while循环和for循环,其中for循环最为灵活,do while循环和while循环基本一致。 语法格式 //while语法 while(循环控制条件) { 语句 } //do while语法 do { } while(循环控制条件); //for循环 for(变量初始化;循环控制条…

如何找到CSDN的草稿

如何找到CSDN的草稿 Ps:CSDN的草稿箱有点难找

W10关闭不必要的服务

1 win10关不必要的服务 简单粗暴且有效 2 win10电脑如何关闭不必要的启动项 关闭不必要的启动项 3 有关服务方面 没有试验过,以后有空试验一下

pat 乙级 1004 成绩排名(C++)

题目 读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个学生的姓名…

java8 函数式编程_您必须学习Java 8的函数式编程吗?

java8 函数式编程我最近一直在研究Java 8,并掌握了Manning出版的“ Java 8 In Action” 。 让我印象深刻的第一件事是Java 8独特的销售主张是函数式编程。 函数现在是一流的变量,您可以像int或String一样在代码中传递它们。 这是一个很大的变化。 近年来…

Dell笔记本双系统安装(Ubuntu 16.04)

一 参考博客 重点 以上博客在分盘问题中描写不详细,参考右边博客: 有关分盘问题 注意:其中,由于Bios Dell与其余电脑存在区别, 1. 开机按F12,进入BIOS 2.在 BIOS 的Boot菜单下,将Secure Bo…

pat 乙级 1006 换个格式输出整数(C++)

题目 让我们用字母 B 来表示“百”、字母 S 表示“十”&#xff0c;用 12…n 来表示不为零的个位数字 n&#xff08;<10&#xff09;&#xff0c;换个格式来输出任一个不超过 3位的正整数。 例如 234 应该被输出为 BBSSS1234&#xff0c;因为它有 2 个“百”、3 个“十”、以…

Stomp-Spring服务器端的Web套接字Java客户端

问题&#xff1a; 为了分析问题&#xff0c;我不得不编写一个简单的Java Web套接字客户端站点代码&#xff0c;并使用基于stomp的Web套接字代理连接到服务器端基于Spring的应用程序。 解决方案&#xff1a; pom.xml <?xml version"1.0" encoding"UTF-8&qu…

W10更新时间

https://jingyan.baidu.com/article/0aa2237561921088cc0d64f6.html

Selenium Java教程– Selenium中的类名定位器

Selenium中CSS Locator是编写脚本的最重要方面之一。 如果您无法通过使用Selenium中的任何CSS定位器来定位元素&#xff0c;那么精通Selenium自动化将是一项艰巨的任务。 硒提供多种定位元素的方法。 您可以查看有关Selenium中不同CSS定位器的其他文章&#xff0c;这些文章可通…

pat 乙级 1056 组合数的和(C++)

题目 给定 N 个非 0 的个位数字&#xff0c;用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8&#xff0c;则可以组合出&#xff1a;25、28、52、58、82、85&#xff0c;它们的和为330。 输入格式&#xff1a; 输入在…

Tensorflow-gpu的方式

主要参考https://www.jianshu.com/p/9911dee2f00b 主要讲一下在Linux下安装tensorflow gpu版的两种方式&#xff1a;使用conda和pip安装。安装cpu版本比较简单&#xff0c;安装命令相同&#xff0c;但是省去了安装cuda和cudnn。 注意&#xff1a; 在安装tensorflow gpu版本前…

pat 乙级 1016 部分A+B(C++)

题目 正整数 A 的“D​A&#xff08;为 1 位整数&#xff09;部分”定义为由 A 中所有 D​A组成的新整数 P​A。例如&#xff1a;给定 A3862767&#xff0c;DA6&#xff0c;则 A 的“6 部分”P​A是 66&#xff0c;因为 A 中有 2 个 6。现给定 A、D​A、B、DB&#xff0c;请编…

NS3使用过程中重要内容整理

1 ns-3中两个常用的网络分析工具——TcpDump和Wireshark 可以与Wireshark结合,更好的理解数据包的传送过程

C++ floor、ceil、round函数的区别

函数解释 floor函数&#xff0c;向下取整。即向负无穷方向取离传入参数最近的整数ceil函数&#xff0c;向上取整。即向正无穷方向取离传入参数最近的整数round函数&#xff0c;四舍五入。 头文件 C语言&#xff1a;math.hC: cmath 函数原型 double floor(double)double ce…

javamail程序源码_JavaMail可能是邪恶的(并迫使您重新启动应用程序服务器)

javamail程序源码在配置JavaMail时&#xff0c;总是有一种有趣的方法。 基本上&#xff0c;您必须填写无类型的地图或属性结构&#xff0c;并希望获得正确的解释。 网络上无数的教程显示了使其正常工作&#xff08;发送/接收邮件&#xff09;所需的最小属性。 但是&#xff0c…

U盘在Ubuntu20.04下只能读取文件不能向U盘复制文件

背景 U盘在Ubuntu20.04下只能读取文件不能向该U盘复制文件,该U盘在其余电脑上一点问题不存在. Ubuntu系统插入其余U盘也能正确读取,只对该U盘无法处理. 处理过程 在CSDN中找了许多方法&#xff0c;比如这种“三行命令教你解决linux系统下U盘只读文件系统问题”。 但是一点…

C++ 函数参数3种传值方式(以交换两个数为例)

简介 在C中&#xff0c;函数参数的传值方式有传值调用、指针调用和引用调用。接下来&#xff0c;通过一个实例来演示三者区别。 代码 #include <iostream>using namespace std; //传值调用 void Swap(int a,int b) {int tempa;ab;btemp; } //指针调用 void Swap2(int…

删除已弃用的CMS垃圾收集器的JEP草案

在2017年4月10日的文章“ Java垃圾收集器&#xff1a;G1GC何时将CMS强制退出&#xff1f; ”&#xff0c;我讨论了JEP 291 &#xff08;“弃用并发标记扫描&#xff08;CMS&#xff09;垃圾收集器”&#xff09;&#xff0c;并提供了一些赞成和反对弃用&#xff08;并最终淘汰&…

Ubuntu系统中利用Sublime分别运行Python与Python3

背景 两台Ubuntu系统的电脑均使用Sublime&#xff0c;运行相同的代码&#xff0c;出现不同的效果。 经观察&#xff0c;一个Sublime python F5 编译采用的为python3&#xff0c;另一个采用的为python2&#xff08;通过两个版本的print函数不同观察&#xff0c;一个print&…