我还在学习量角器,所以我不确定这是一个简单的答案,我没有得到,但我只是想让浏览器等待直到我检索的属性为真。Browser.wait()直到.getAttribute()返回true
我正在测试this site的披萨选项。
完整代码:
browser.get('https://material.angularjs.org/latest/#/demo/material.components.select');
var topping = element(by.model('topping'));
topping.click();
browser.wait(function() {
return topping.getAttribute('aria-expanded').then(function(value) {
return value == 'true';
});
}, 5000);
var toppingOptions = element.all(by.css('[role="option"]'));
toppingOptions.get(5).click();
expect(topping.getText()).toBe('Onion');
这给我的错误:
Element is not clickable at point (436, 693). Other element would receive the click:
<md-backdrop class="md-select-backdrop md-click-catcher md-default-theme"></md-backdrop>
还要说明一点,如果我topping.click()
后browser.wait()
,则测试通过之前把browser.sleep(1000);
。所以我知道剩下的测试不是失败的。出于某种原因,等待呼叫不起作用。
我在想这可能与我试图点击的选项在点击topping
时在技术上看不到这一事实有关,因为它位于带有滚动元素的组合框中。如果有人知道模拟滚动到“洋葱”元素的好方法,那么也会非常感激。
这似乎并没有解决它。我仍然得到元素在点(x,y)错误处不可点击。我可以看到被点击的按钮,然后一个选择窗口开始弹出,但它似乎在该窗口完全加载之前尝试点击。我正在测试[本页]的比萨饼部分(https://material.angularjs.org/latest/#/demo/material.components.select)以供参考。 –
@WesThompson明白了。你能分享到目前为止你所拥有的完整代码以及你得到的错误的堆栈跟踪吗?谢谢。 – alecxe
更新,感谢您愿意帮助。 –