分度器中硒定位器的完整指南(示例)

在测试网站的功能时,特别是Web元素(例如单选按钮,文本框,下拉列表等),您需要确保能够访问这些元素。 Selenium定位器正是出于这个目的,通过使用此命令,我们可以识别这些Web元素DOM(文档对象模型),以通过脚本执行Selenium测试自动化 。

这些Selenium定位器对于脚本编写至关重要,因为如果输入错误,自动化脚本将无法正常工作。 因此,您的Selenium测试自动化工作将依赖于任何测试框架中的这些Selenium定位器。 Protractor是Angular JS框架,具有许多Selenium定位符,可以在运行时使用特定的By方法来标识。

在本量角器测试教程中 ,我们将深入讨论“量角器”中的Selenium定位器,以及如何使用定位器与应用程序进行交互并获取当前的运行状态。 因此,让我们开始吧。

使用量角器和硒自动化跨浏览器测试

量角器中硒定位器的重要性是什么?

让我们从量角器测试教程入手,讨论有关选择定位器性能时应牢记的各种功能。 在大多数情况下,量角器中的硒定位器已被证明是良好且可靠的。 它提供的一些功能包括:

1.良好的可读性:
量角器中的硒定位器易于阅读和使用。 定位器通过使用户可以访问它们来为测试代码提供足够的灵活性。

2.减少维护:

  • 量角器中的硒定位器以优化的方式开发,因此需要较少的维护费用。
  • 定位器的结构设计精巧,因此,即使元素位置发生变化,也无需更新定位器。 仅当Web应用程序的功能发生任何更改时,才需要进行修改。

3.提高速度:
这是Selenium定位器最重要的属性之一,因为此功能决定了Web应用程序的性能。 量角器中的Selenium定位器具有唯一的ID,这使其比其他Selenium定位器相对更快。 有时,元素定位的速度还取决于浏览器的内部处理速度。

量角器中硒定位器的目的

继续我们的量角器测试教程,我们将讨论Selenium定位器的重要性。 为了在Protractor中编写良好的端到端测试,要记住的重要一点是为网页找到合适的文档对象模型(DOM)元素。 它倾向于通过实例化对象将定位器工厂全局导出。 由于量角器是基于Selenium接口构建的,因此量角器中的Selenium定位器与Selenium WebDriver关联的定位器具有相当的可比性。 因此,很有趣的是,该框架也支持量角器中的Selenium定位器。

量角器中硒定位器的工作

接下来,在本量角器测试教程中,我们将讨论Selenium定位器如何在量角器中工作。 定位器在量角器中的运行方式是通过导出全局函数(即“ element”),该函数输入定位器并向我们提供ElementFinder。

另一方面,ElementFinder提供了一种与元素进行通信并使用各种操作方法(例如getText(),click()和sendKeys())获取有关元素的详细信息的基本方法。 这些方法非常流行,在执行Selenium测试自动化时经常使用。

“元素”功能的主要目的是定位单个元素。 要查找多个元素,请使用'element.all'函数。

还有其他几种方法可以在Protractor中找到元素,也可以使用Angular JavaScript框架中的元素定位策略,例如by.model(),by.repeater(),by.binding()等。

量角器中的硒定位剂清单

现在,在量角器测试教程的这一部分中,让我们熟悉一些主要用于定位DOM元素的全局变量,并提供示例,以更好地了解量角器中的这些Selenium定位器。 这些是与“ by”关键字相关的一组元素定位器策略,例如by.className,by.css,by.model等。一些最常用的方法是:

  • by.className
  • by.id
  • 由CSS
  • by.linkText
  • 按名字
  • by.partialLinkText
  • by.tagName
  • by.xpath

1. by.className
className定位器是Protractor中使用最广泛的硒定位器之一。 ts的目的是检查页面中具有class属性的元素,然后进一步对特定于其类名称的元素进行分类。

例如:-
XML文档样本:-

/* The list contains a class for positive or negative */<ul class="digits"><li class="positive">5</li><li class="negative">-6</li>
</ul>

使用的定位器:-

/* The locator that returns the expected element for the specified class */var even = browser.findElement(by.className(positive));
expect(even.getText()).toBe('5');
// making use of our locator in our test script //
expect(browser.findElement(by.className('even'))).toBe('-6');

2. by.id

Id定位器用于基于XML文档结构中定义的id属性来发现网页中的元素。

例如 :-
XML文档样本:-

/* The list contains class for positive or negative */<ul class="digits"><li class="negative">-6</li><li class="positive" id="positiveNumber">5</li>
</ul>

使用的定位器:-

/* The locator that returns the expected element for the specified id */// making use of our locator in our test script //
var positive = browser.findElement(by.id('positiveNumber'));
expect(positive.getText()).toBe('5');

3. by.css

CSS定位器基于CSS选择器(即用于区分网页上现有元素的标识符值)来帮助识别元素并对其进行分类。 当我们没有选择基于类名或ID进行选择时,这些Selenium定位器也是量角器中最优选的替代品之一。

例如 :-
XML文档样本:-

/* The list contains class for two color i.e blue or red */<ul class="color"><li class="first">blue</li><li class="second" id="secondColor">red</li>
</ul>

使用的定位器:-

/* The locator that returns the expected element for the specified CSS */var first = browser.findElement(by.css('.first'));
expect(first.getText()).toBe('blue');
// making use of our locator in our test script //
expect(browser.findElement(by.css('#secondColor'))).toBe('red');

4. by.linkText

所述的目的LINKTEXT定位器是以识别对应于所述锚固元件即<一>标记在DOM匹配的字符串的文本。 它仅对超链接有效,并且默认情况下,如果网页上的链接文本存在多个元素,则选择第一个链接文本。

例如 :-
XML文档样本:-

/* The anchor tag which contains the website name and its URL */<a href="http://www.lambdatest.com">LambdaTest</a><a href="http://www.lambdatest.com">LambdaTest</a>

使用的定位器:-

/* The locator that returns the expected element for the link i.e. Lambda Test*/// making use of our locator in our test script //
var myLink = element(by.linkText(‘LambdaTest'));expect(myLink.getTagName()).toBe('a');

5.借名

名称定位器用于发现名称属性中具有特定值的元素。
例如 :-

XML文档样本:-

/* The list contains a class for two names i.e John and Mark */<ul><li name="developer">John</li><li name="tester">Mark</li></ul>

使用的定位器:-

/* The locator that returns the expected element for the specified name */// making use of our locator in our test script //
var developer = browser.findElement(by.name('developer'));// making use of our locator in our test script //
var tester = browser.findElement(by.name('tester'));expect(developer.getText()).toBe('John');expect(tester.getText()).toBe('Mark');

6. by.partialLinkText

partialLinkText定位器用于需要在链接文本元素中查找包含字符串或字符串部分的元素的情况。

例如 :-

XML文档样本:-

/* The list contains anchor tag which has the required text */<ul><li><a href="http://www.lambdatest.com"> Selenium test automation Cloud</a></li><li>Online Selenium Grid for Automated Testing</li>
</ul>

使用的定位器:-

// /* The locator that returns the expected element i.e. gives us the 'a' element value ‘Selenium test automation Cloud’ and navigates to the same link */// making use of our locator in our test script //
var myLink = browser.findElement(by.partialLinkText('Cloud'));myLink.click();

7. by.tagName

tagName定位符用于定位具有特定标签名称的元素。 它在网页中查找具有任何标签名称的元素,例如<a>,<div>,<p>等。它的功能类似于XML文档结构中使用的getElementsByTagName函数。

例如:-

XML文档样本:-

/* The list contains anchor tag which has the required text */<a href="http://www.lambdatest.com">LambdaTest</a>

使用的定位器:-

// /* The locator that returns the expected element i.e. gives us the 'a' tag  value and that matches with the text given */ //// making use of our locator in our test script //
expect(element(by.tagName('a')).getText()).toEqual('LambdaTest');

8. by.xpath

Xpath定位器用于查找提供的XML Xpath Selector的匹配元素。 处理XPath Selenium定位器时要注意的重要事项是,要搜索整个XML文档模型并为其元素化,我们必须以“ //”开始XPath定位器。

例:

 XPath = //*[ @ value='Inbox'] - matches with Inbox  xpath= //button[ @name="Gma"] - matches with Gmail 

例如 :-

XML文档样本:-

/* The list contains anchor tag which has the required text */<ul><li><a href="http://www.lambdatest.com">Selenium test automation Cloud </a> </li><li> Online Selenium Grid for Automated Testing </li>
</ul>

使用的定位器:-

// /* The locator that returns the expected element i.e. gives us the 'a' tag  value with the help of XPath and that matches with the text given */// making use of our locator in our test script //
var xpathEle = browser.findElement(by.xpath('//ul/li/a'));expect(xpathEle.getText()).toBe(‘Selenium test automation Cloud’);

特定于角度的硒定位器

现在,在此量角器测试教程中,让我们看一下Angular中使用的一些Selenium定位器,但它们也可用于量角器框架。

  • 按型号
  • by.buttonText
  • by.partialButtonText
  • by.exactBinding
  • 绑定
  • by.exactRepeater
  • 中继器
  • by.cssContainingText
  • 选项
  • by.deepCss
  • by.addLocator

1.按型号

模型定位器标识具有与ng-model属性关联的确切文本的元素。

例如 :-

XML文档样本:-

// /* The XML input type contains the text with the model attribute */ //<input type="text" ng-model="developer.name">

使用的定位器:-

// /* The locator finds the element with the model attribute and returns the value */ //// making use of our locator in our test script //
element(by.model('developer.name')).click();

2. by.buttonText

buttonText定位器查找与按钮标签具有相同文本或在标签的子元素内部的元素匹配。

例如 :-

XML文档样本:-

// /* The XML contains the button with the required value */ //<button> Selenium test automation Cloud </button>

使用的定位器:-

// /* The locator finds the element with the button tag and returns the value */ //// making use of our locator in our test script //
element(by.buttonText('Selenium test automation Cloud'));

3. by.partialButtonText

partialButtonTextlocator查找与包含文本部分的元素匹配,即在button标签或标签子元素内部的部分匹配。

例如 :-

XML文档样本:-

// /* The XML contains the button with the required value */ //<button> Selenium test automation Cloud </button>

使用的定位器:-

// /* The locator finds the element with the button tag and returns the value */ //// making use of our locator in our test script //
element(by.partialButtonText('Cloud'));

4. by.exactBinding

compareBinding定位器用于使用提供的确切字符串/文本值来定位ng-bind属性。 它不会检查文本中是否有任何部分匹配。

例如:-

XML文档样本:-

// /* The XML input type contains the text with the bind attribute */ //<p ng-bind="developer.name"></p>

使用的定位器:-

// /* The locator finds the element with the bind attribute and returns the value */ //// making use of our locator in our test script //
expect(element(by.exactBinding('developer.name')).isPresent()).toBe(true);

5.绑定

该绑定定位器用于使用给定的文本值来定位ng-bind属性。 它还有助于查找部分匹配的文本,即,如果某个属性与给定的定位器具有某些匹配,则此元素将由我们的定位器找到,因此将返回相关的匹配元素。

例如:-

XML文档样本:-

// /* The XML input type contains the text with the bind attribute */ //<p ng-bind="developer.name">John</p>

使用的定位器:-

// /* The locator finds the element with the bind attribute and returns the value */ //// making use of our locator in our test script //
var eleName = element(by.binding(developer));
expect(eleName.getText()).toBe('John');

6. by.exactRepeater

compareRepeater定位器标识具有与ng-repeat属性关联的确切文本的元素。 它不会检查文本中是否有任何部分匹配。

例如:-

XML文档样本:-

// /* The XML input type contains the text with the bind attribute */ //<li ng-repeat="dev in developer_names"></li><li ng-repeat="test in tester_names"></li>

使用的定位器:-

// /* The locator finds the element with the bind attribute and returns the exact value */ //// making use of our locator in our test script //expect(element(by.exactRepeater('dev in developer_names')).isPresent()).toBe(true);

7. by.repeater

转发器定位器用于查找具有ng-repeat属性的元素。 它还有助于查找部分匹配的文本,即,如果某个属性与给定的定位器具有某些匹配,则此元素将由我们的定位器找到,因此将返回相关的匹配元素。

例如:-

XML文档样本:-

// /* The XML input type contains the text with the repeater attribute */ //<tr ng-repeat="developer_info"><td>{{dev.id}}</td><td>{{dev..name}}</td><td>{{dev.salary}}</td>
</tr>

使用的定位器:-

// /* The locator finds the element with the repeater attribute and returns the value */ //// making use of our locator in our test script //var devID = element(by.repeater('developer_info').row(0));
expect(devID.getText()).toBe('2');var devName = element(by.repeater('developer_info').row(1));
expect(devName.getText()).toBe('Mark');

8. by.cssContainingText

cssContainingText定位器通过具有特定文本字符串CSS查找元素,即,它结合了CSS定位器和文本元素定位器的功能来标识该元素。

例如:-

XML文档样本:-

// /* The XML input type contains the text with the css text */ //<ul><li class="color">Blue</li><li class="color">Red</li>
</ul>

使用的定位器:-

// /* The locator finds the element and returns the value for the Blue color but not the Red color */ //// making use of our locator in our test script //var blue = element(by.cssContainingText('.color', 'Blue'));

9. by.options

选项定位器标识与属性ng-option关联的元素。

例如 :-

XML文档样本:-

// /* The XML input type contains the text with the option attribute */ //<select ng-options="Colors options in the custom collection"><option value="0">Blue Color</option><option value="1">Red Color</option><option value="2">Green Color</option>
</select>

使用的定位器:-

// /* The locator finds the element with the options attribute and returns the value */ //// making use of our locator in our test script //var colorOptions = element.all(by.options('Colors options in the custom collection'));
expect(colorOptions.count()).toEqual(Green);

10. by.deepCss

量角器中的deepCss定位器用于发现阴影DOM元素,默认情况下,使用标准元素Selenium定位器不容易发现它。

例如:-

XML文档样本:-

// /* The XML input type contains the text and returns the fetched value */ //<div><span id="outerspan">   //outerspan<"shadow tree">           //shadow tree<span id="span1"></span><"shadow tree"><span id="span2"></span></></>
</div>

使用的定位器:-

// /* The locator finds the element with the options attribute and returns the value */ //// making use of our locator in our test script //var mySpan = element.all(by.deepCss('span'));  //myspan
expect(mySpan.count()).toEqual(7);
// making use of our locator in our test script //var checkSpans = element.all(by.css('span');  //verify span
expect(checkSpans.count()).toEqual(5);

在量角器测试教程的下一部分中,我们将讨论如何将量角器与其他功能强大的工具集成。 在此之前,如果您想设置一个量角器来运行Selenium自动化脚本,则可以查阅我们的支持文档。

11. by.addLocator

量角器中的addLocator用于创建自定义定位器,并稍后在配置中加载它们。

例如 :-

XML文档样本:-

// /* The XML input type contains the text and returns the fetched value */ //<button ng-click="viewResults()">View</button>

使用的定位器:-

// /* The locator finds the element with the options attribute and returns the value */ //// making use of our locator in our test script //by.addLocator('Selenium Grid',function(buttonText, opt_parentElement, opt_rootSelector) {
var using = opt_parentElement || document,
buttons = using.querySelectorAll(‘Automate testing’);
return Array.prototype.filter.call(buttons, function(button) {
return button.textContent === buttonText;
});
});

结论

正如我们在此量角器测试教程中所看到的那样,由于量角器是基于Selenium构建的,并且主要用于Angular网站,因此它从它们继承属性。 这就是我们在量角器中使用Selenium定位器的原因,它为框架增添了更多魅力,并在充分使用时使其更强大。 另一方面,量角器不仅与硒定位器有关,还可以在市场上使用保护器测试的许多其他方面和功能,从而增加了更多的内容,我们最终将在量角器测试教程中进行介绍。


翻译自: https://www.javacodegeeks.com/2020/04/complete-guide-to-selenium-locators-in-protractor-examples.html

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

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

相关文章

wildfly管理控制台_WildFly 9 –别希望您的控制台像这样!

wildfly管理控制台每个人都可能听到这个消息。 周一发布了第一个WildFly 9.0.0.Alpha1版本。 您可以从wildfly.org网站上下载它&#xff0c;最大的变化是它是由一个新的功能配置工具构建的&#xff0c;该工具位于现在单独的核心发行版上&#xff0c;还包含一个新的Servlet发行版…

azure mysql sql,UiPath连接Azure Sql Server数据库

一、创建数据库在Azure中创建SQL数据库image更改防火墙设置&#xff0c;并设置客户端IP访问规则image二、安装数据源驱动在本地安装数据源驱动程序&#xff0c;保证可以正常接入到远程的数据库。如果不安装驱动程序&#xff0c;则会出现以下报错&#xff1a;[Microsoft][ODBC D…

linux 误删除mysql表能恢复吗,Linux误删数据恢复

引子指在键上飘&#xff0c;难免会湿手套。当你按下shiftdel键后&#xff0c;会不会突然心里凉透&#xff0c;当你执行rm -rf后&#xff0c;会不会马上去搜索哪个国家入境不需要签证。或者你还会遇到如下的情况&#xff1a;root4xem7:~# aliasalias cdrm -rfalias ddocker数据恢…

Apache Camel 3.1 –更多骆驼核心优化(第3部分)

我以前曾在博客中介绍过我们在下一个Camel 3.1版本中所做的优化 博客第1部分 博客第2部分 今天&#xff0c;我想简短介绍一下我们已经完成的最新开发&#xff0c;因为我们准备在本周末或下半年准备好构建和发布Camel 3.1。 从第2部分开始&#xff0c;我们设法在路由过程中将…

jvm jinfo 参数_jinfo:JVM运行时配置的命令行浏览

jvm jinfo 参数在最近的一些博客中&#xff08;特别是在对Java EE 7性能调优和优化以及WildFly性能调优的书中的评论中&#xff09;&#xff0c;我引用了自己过去在某些Oracle JDK命令行工具上的博客文章。 令我震惊的是&#xff0c;我从来没有专门解决过漂亮的jinfo工具&#…

49自动化测试中最常见的硒异常

开发人员将始终在编写代码时牢记不同的场景&#xff0c;但是在某些情况下&#xff0c;实现可能无法按预期工作。 相同的原则也适用于测试代码&#xff0c;该代码主要用于测试现有产品的功能&#xff0c;发现错误以及使产品100&#xff05;不受错误影响。 正确地说&#xff0c;…

鹰式价差matlab,鹰式期权:什么叫铁鹰式期权组合,蝶式价差期权?

蝶式期权套利 是利用 交割月份的价差进行 套期获利&#xff0c; 个方向相 反、 共享居中交割月份合约的跨期套利组成。是一种期权策略&#xff0c;风险有限&#xff0c;盈利也有限&#xff0c;是由一手牛市套利和一手熊市套利组合而成的。铁鹰式期权组合是牛市看跌价差期权组合…

angular8 rest_带有Angular JS的Java EE 7 – CRUD,REST,验证–第2部分

angular8 rest这是Angular JS承诺的Java EE 7的后续版本–第1部分 。 花了比我预期更长的时间&#xff08;找到时间来准备代码和博客文章&#xff09;&#xff0c;但是终于到了&#xff01; 应用程序 第1部分中的原始应用程序只是带有分页的简单列表&#xff0c;以及提供列表数…

带有Java Pojo作为输入输出示例的AWS Lambda函数

在上一教程中&#xff0c;我们看到了如何使用Java创建AWS Lambda函数&#xff0c;并传递了String作为输入&#xff0c;还返回了String作为Output。如果您是第一次创建lambda函数&#xff0c;我建议先阅读该教程。 在本教程中&#xff0c;我们将看到如何传递Java普通的旧Java对…

php右侧弹窗QQ客服,JavaScript_网页右侧悬浮滚动在线qq客服代码示例,网页右侧悬浮滚动QQ在线客服 - phpStudy...

网页右侧悬浮滚动在线qq客服代码示例网页右侧悬浮滚动QQ在线客服代码function myEvent(obj,ev,fn){if (obj.attachEvent){obj.attachEvent(onev,fn);}else{obj.addEventListener(ev,fn,false);};};function getbyClass(id,sClass){var oParent document.getElementById(id);va…

idea spark java,IntelliJ Idea 搭建spark 开发环境

笔者介绍的是在MAC环境下使用Idea搭建spark环境。环境:spark 2.0.0scala 2.11.8maven 3.9.9idea 151.Idea的安装.Idea可以在官网上下载。熟悉java的肯定都知道这个开发利器&#xff0c;可以在官网上进行下载&#xff0c;在此就不在赘述。有免费的和付费版本&#xff0c;对于我们…

optaplanner_OptaPlanner –具有真实道路距离的车辆路线

optaplanner在现实世界中&#xff0c;车辆路径问题&#xff08;VRP&#xff09;中的车辆必须走这条路&#xff1a;它们不能在客户之间直线行驶。 大多数VRP研究论文和演示都乐于忽略此实现细节。 和我一样&#xff0c;过去。 尽管使用道路距离&#xff08;而不是空中距离&#…

java中的jpa_JPA教程–在Java SE环境中设置JPA

java中的jpaJPA代表Java Persistence API&#xff0c;它基本上是一个规范&#xff0c;描述了一种将数据持久存储到持久存储&#xff08;通常是数据库&#xff09;中的方法。 我们可以将其视为类似于Hibernate之类的ORM工具的东西&#xff0c;除了它是Java EE规范的正式组成部分…

php中des加密cbc模式,php中加密解密DES类的简单使用方法示例

本文实例讲述了php中加密解密DES类的简单使用方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;在平时的开发工作中&#xff0c;我们经常会对关键字符进行加密&#xff0c;可能为了安全 也可能为了规范&#xff0c;所以要正确使用DES加密解密代码1:class DES{var $k…

java 并发线程_Java并发教程–线程之间的可见性

java 并发线程当在不同线程之间共享对象的状态时&#xff0c;除了原子性外&#xff0c;其他问题也会发挥作用。 其中之一是可见性。 关键事实是&#xff0c;如果没有同步&#xff0c;则不能保证指令按照它们在源代码中出现的顺序执行。 这不会影响单线程程序中的结果&#xff…

维持硒测试自动化的完美方法

毫无疑问&#xff0c; 自动浏览器测试已经改变了软件开发的工作方式。 如果不是Selenium&#xff0c;我们将无法像我们一样使用各种各样的无错误Web应用程序。 但是有时&#xff0c;甚至IT部门也误解了自动化一词。 大多数人认为计算机将为他们完成所有测试&#xff01; 他们最…

双色球霸主网络问题_霸主–统治和管理API的地方

双色球霸主网络问题今天我们生活在一个越来越分散的世界中。 如今的计算机系统不再是在随机桌子下面的某些硬件上运行单个部门项目&#xff0c;而是大规模&#xff0c;集中甚至分散地运行。 监视和管理的需求从未改变&#xff0c;但是随着时间的推移变得越来越复杂。 如果将所有…

php验证码 php中文网,ThinkPHP 使用不同风格及中文的验证码

使用其他风格验证码在上文《ThinkPHP 验证码详解及实例》中了解了 ThinkPHP 验证码的具体用法&#xff0c;本文将进一步介绍如何使用不同风格的验证码以及使用中文验证码。上文例子使用的是默认参数&#xff0c;也就是生成 4 位的数字验证码。buildImageVerify 方法生成验证码时…

java 开发人员工具_Java开发人员应该知道的5种错误跟踪工具

java 开发人员工具随着Java生态系统的发展&#xff0c;可满足不断增长的请求和用户对高性能需求的Web应用程序成为了新型的现代开发工具。 具有快速新部署的快速节奏环境需要跟踪错误&#xff0c;并以传统方法无法维持的水平获得对应用程序行为的洞察力。 在本文中&#xff0c;…

Apache Camel 3.2 – Camel的无反射配置

在Apache Camel项目中&#xff0c;我们正在努力开发下一个即将发布的下一个Apache Camel 3.2.0版本。 我们在Camel 3中努力研究的问题之一就是使其变得更小&#xff0c;更快。 其中一个方面是配置管理。 您可以按照12要素原则以多种方式完全配置Camel&#xff0c;以使配置与应…