javascript - 如何用 Protractor 选择单个元素

标签 javascript angularjs jasmine protractor

我是 Protractor 的新手,我有一个 angularjs 脚本,我试图选择元素“收件箱”。这是 3 个 Accordion 类型下拉菜单中的第二个。

<div class="container">
 <div class="ng-scope" ui-view="" style="">
  <div class="logo-container ng-scope">
  <img class="img-responsive center-block" src="images/logo.png">   
 </div>
  <a class="ng-scope" ng-click="toggleNav('/inboxes/alerts')">
   <div class="inboxes inbox-alerts panel">
   <div class="panel-body">
   <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="panel-text ng-binding">
Alerts
<span class="badge ng-binding">3</span>
</span>
</div>
</div>
</a> 
<a class="ng-scope" ng-click="toggleNav('/inboxes/inbox')">
  <div class="inboxes inbox panel">
    <div class="panel-body">
      <span class="glyphicon glyphicon-inbox" aria-hidden="true"></span>
      <span class="panel-text ng-binding">
      Inbox
    <span class="badge ng-binding">41</span>
   </span>
  </div>
 </div>
</a>

我能够使用 element.all 做到这一点,但这会返回一个元素数组 “[‘警报 3’、‘3’、‘收件箱 41’、‘41’、‘观察名单 104’、‘104’]” 但我真正想要的是获得特定元素。 下面是我的代码

it('should open & close the Inbox panel', function() {
    var inbox_elm1 = element.all(by.binding('Inbox')).get(2);
      inbox_elm1.click();
 ]);
}); 

如前所述,我正在使用 get(2) 获取第二个元素。但是我不想使用 element.all 来获取这个元素。
我尝试过其他返回 nil 的东西,例如

var inbox_elm1 = element(by.binding('Inbox'));

var inbox_elm1 = element.all(by.binding('Inbox')).first(); 

返回一个错误。

考虑到这一点,我已经很容易地成功选择了 Alerts 元素,因为它是第一个使用以下面板的面板:

var alrt_elm = element.all(by.binding('Alerts')).first();
alrt_elm.click();

但是重复上述代码并将“Alerts”更改为“Inbox”只是继续选择 Alerts Accordion 而不是 Inbox Accordion 。建议?抱歉阅读时间过长。

最佳答案

您可以使用 cssContainingText,它将 css 定位器作为第一个参数,将文本作为第二个参数。

var alerts = element(by.cssContainingText('span.panel-text', 'Alerts'));
var inbox = element(by.cssContainingText('span.panel-text', 'Inbox'));

来源:http://www.protractortest.org/#/api?view=ProtractorBy.prototype.cssContainingText

关于javascript - 如何用 Protractor 选择单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37460950/

相关文章:

javascript - JS 原型(prototype)不工作

javascript - 某些 Mac 机器浏览器上的 Angularjs CORS 问题

javascript - Google map 自定义信息窗口

angular - 构造函数中的 SpyOn 服务函数调用

javascript - 如何测试 :before selector with Jasmine in an Angular 6 project? 的内容

javascript - 当我选中一个或多个复选按钮时,如何在联系表单 7 上启用 Google 分析跟踪?

javascript - jQuery ajax : how to destroy submit if ajax validation fails?

javascript - 创建一个更改不同元素的背景和文本颜色的按钮

javascript - 在自定义过滤器中使用数组

unit-testing - 在angularjs中测试指令时如何模拟模糊?