问:如何使用特定元素通过量角器定位anothor equative元素?

时间:2018-01-30 06:49:11

标签: protractor

我是一个新的量角器蜜蜂。  这是代码:

    // fist line
<table class="table">
<tbody class="table-body">
    <tr class="table-tree" ng-repeat="items in page">
         <td class="checkbox" >
              <input type="checkbox">
         <td class="node-name">
              <span class="node-icon" title="tree">

// second line
    <tr class="table-tree" ng-repeat="items in page">
         <td class="checkbox" >
              <input type="checkbox">
         <td class="node-name">
              <span class="node-icon" title="flower">

// third line
    <tr class="table-tree" ng-repeat="items in page">
         <td class="checkbox" >
              <input type="checkbox">
         <td class="node-name">
              <span class="node-icon" title="flower">
</tbody>
</table>

我想点击sencond复选框,第一行并不总是存在,所以我不能使用$$('。复选框')。得到(1)得到它,所以我试图找到第一个复选框有[title =“flower”],然后我写这个:

var a = $$('[title="flower"]').get(0).getWebElement();
var b = a.getDriver().findElement(by.css('.checkbox'));
b.click();

但是当流程结束时,第一行复选框就是点击, 什么是错的?我该如何解决?

3 个答案:

答案 0 :(得分:0)

尝试$$('[title="flower"]').get(0).$('.checkbox').click()

答案 1 :(得分:0)

首先:为什么要使用.getWebElement().getDriver()

你的错误信息是什么?

@ Vlad的解决方案没问题,但checkbox不是flower的祖先。

您需要获取tr,检查其是否包含title="flower",如果是,请点击checkbox的{​​{1}}。

我不会为您编写代码,但您可以查看我的答案:https://stackoverflow.com/a/48020146/6331748并根据您的需要调整代码。

答案 2 :(得分:0)

选项1)使用XPath

element(by.xpath('//tr[td/span[@title="flower"]]/td[1]/input')).click();

选项2)使用element()链

// find the `SPAN` which title is flowser <br>
element(by.css('span[title="flower"]')) <br>
// find parent of `SPAN` until `TR` <br>
.element(by.xpath('./../..')) <br>
// find the `input` inside the first `TD` of above `TR` <br>
.element(by.xpath('./td[1]/input'))