【问题标题】:Click on a specific item on a list with similar ngcontent classname but has a span unique text using Protractor typescript单击列表上具有相似 ngcontent 类名但具有跨度唯一文本的特定项目,使用 Protractor 打字稿
【发布时间】:2018-11-29 20:49:14
【问题描述】:

我在创建量角器打字稿代码方面需要帮助,我如何单击列表上的这个特定项目?它的 _ngcontent 与其他人相似,但具有特定的跨度文本,有人知道如何做到这一点吗?网站上的代码是:

<div _ngcontent-c3  class="ListTreeNode addTreeNode ng-star-inserted" style="padding-left: 0px;"> ... </div>
<div _ngcontent-c3  class="ListTreeNode addTreeNode ng-star-inserted" style="padding-left: 0px;">
     <div _ngcontent-c3  class="nodeItemlist net-body-2">
         <!----><!---->
             <fa-icon _ngcontent-c3   class="ng-fa-icon ng-star-inserted">...</fa-icon>
              <!----><!---->
              <span _ngcontent-c3="">Driver Items</span>
              <!---->
        </div>
</div>
<div _ngcontent-c3  class="ListTreeNode addTreeNode ng-star-inserted" style="padding-left: 0px;"> ... </div>

我已经尝试了以下方法,但我似乎无法使其工作......

clickditem = element(by.xpath('//span[@class=".nodeItemlist.net-body-2"][text()="Driver Items"]'));
clickditem = element(by.cssContainingText('.nodeItemlist.net-body-2','Driver Items'));
clickditem = element(by.cssContainingText('.ng-fa-icon.ng-star-inserted','Driver Items'));

他们表演...

clickditem.click();

这些似乎都不起作用,并且错误提示:失败:使用定位器找不到元素:By(xpath..... or by.cssContainingText(....

【问题讨论】:

    标签: angular typescript jasmine protractor


    【解决方案1】:

    试试这个:

    clickditem = element.all(by.cssContainingText('div.nodeItemlist.net-body-2','Driver Items')).get(0);
    

    【讨论】:

    • selectedList 只有被点击才会出现,如果没有被点击,selectedList 不会出现。如果我只添加元素(by.cssContainingText('div.nodeItemlist.net-body-2','Driver Items'));将出现一条警告说 W/element - 为定位器找到多个元素 by.cssContainingText('div.nodeItemlist.net-body-2','Driver Items') - 将使用第一个结果
    • 我认为警告是说有其他 dom 元素具有相同的类并且包含文本“驱动程序项”
    • 是的,你说得对,比其他具有相同类且包含文本“驱动程序项”的元素要多。但它似乎部分起作用,因为它是正确的第一次出现被执行。 clickeditem = element(by.cssContainingText('div.nodeItemlist.net-body-2','Driver Items'));
    • 如果同一个定位器有多个元素,您可以使用 element.all().get(0)。查看编辑后的答案
    • 说得对。谢谢,我现在没有显示任何警告。
    【解决方案2】:
    clickditem = element(by.cssContainingText('div.odeItemlist.net-body-2>span','Driver Items')).first();
    

    试试上面的那个。希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2019-05-19
      • 2014-06-30
      • 1970-01-01
      • 2020-04-08
      • 2018-01-23
      • 2016-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多