量角器 - 元素不可见(但手动检查时可见)

时间:2015-11-24 07:51:28

标签: css protractor element

我希望你能帮助我。我是量角器的新手。我无法点击量角器中的元素,它表示即使在手动检查时它是可见的也不可见。以下是详细信息:

css代码:

<div class="list" ng-click="openOtherUsers(perCrisis)" ng-show="detailView">
<div class="item item-input-inset content-bg search-bar">
<button class="button button-clear" type="button">
<i class="icon ion-chevron-right"></i>
</button>
<label class="item-input-wrapper">
<i class="icon acc-search placeholder-icon"></i>
<input class="ng-pristine ng-untouched ng-valid" type="text" placeholder="Search for people" ng-model="search.keywords">
</label>
</div>
</div>

量角器代码:

it("this is a trail for SEARCH click", function () {
    browser.waitForAngular();
    var search = element(by.css('.list.list'));
    //expect(search.isPresent()).toBeTruthy(); <<<<< PRESENT, but if     //isDisplayed is used: its false
    search.click(); 
});

仅供参考:父类是列表,我也尝试使用&#34; list&#34; /&#34; [ng-click =&#34; openOtherUsers(perCrisis)&#34;]&#34; /&#34; [纳克放映=&#34;的DetailView&#34;]&#34;作为css定位器。

我希望你能帮助我。谢谢。

3 个答案:

答案 0 :(得分:0)

问题的一个可能原因是可能存在与定位器匹配的另一个元素。在这种情况下,您可能需要改进定位器以唯一标识所需的元素。

另一件可能有用的事情就是等待 - 我们wait for the element to become visible

var search = element(by.css('[ng-click="openOtherUsers(perCrisis)"]')),
    EC = protractor.ExpectedConditions;

browser.wait(EC.visibilityOf(search), 5000);

search.click();

答案 1 :(得分:0)

您可以尝试使用&#39;操作&#39;将鼠标移动到元素然后执行click()

browser.actions().mouseMove(search, 1, 1).perform().then(function(){elem.click()});

答案 2 :(得分:0)

isClickable: async function(el) {
  if (await el.isPresent()) {
    if (await el.isDisplayed()) {
      if (await el.isEnabled()) {
        return true;
      }
    }
  }
  return false;
},

我写了一段时间以解决这个问题。 await需要异步(节点8+),但简化了一些事情。但这显示了元素的可访问性层次结构。

要成为enabled,必须是displayed,而displayed必须是present