我希望你能帮助我。我是量角器的新手。我无法点击量角器中的元素,它表示即使在手动检查时它是可见的也不可见。以下是详细信息:
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定位器。
我希望你能帮助我。谢谢。
答案 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