有没有人成功使用 Protractor 检测到 ionicPopup 警报?我已经尝试了这里建议的所有解决方法,但没有运气。我需要量角器来检测警报并检查警报中的文本。
4 回答
这是我编写的用于测试弹出窗口是否存在并确保标题和正文中的文本正确的类:
var TestUtilities = function(){
this.popup = element(by.css('.popup-container.popup-showing.active'));
//Tests to see if $ionicPopup.alert exists
this.popupShouldExist = function() {
expect(this.popup.isDisplayed()).toBeTruthy();
};
//Tests to see if $ionicPopup.alert contains the text provided in the argument exists in the header
this.popupContainsHeaderText = function (text) {
this.popupShouldExist();
expect(this.popup.element(by.css('.popup-head')).getText()).toMatch(text);
};
//Tests to see if $ionicPopup.alert contains the text provided in the argument exists in the body
this.popupContainsText = function (text) {
this.popupShouldExist();
expect(this.popup.element(by.css('.popup-body')).getText()).toMatch(text);
};
};
module.exports=TestUtilities;
另请查看此站点以获取有关在量角器中测试 Ionic 的更多信息,它讨论了如何检查弹出窗口是否存在: http: //gonehybrid.com/how-to-write-automated-tests-for-your-ionic-app -第 3 部分/
我通过如下设置 popup 变量成功测试了 Ionic 弹出窗口:
var popup = element(by.css('.popup-container.popup-showing.active'));
在测试中:
expect(popup.isDisplayed()).toBeTruthy();
Ionic Popups 仅由 DOM 元素组成,因此您应该能够使用普通定位器来查找/测试它们。因为它们不是由警报组成的,所以您链接到的问题中的解决方法可能没有用。
我明白了——我看到很多问题都试图以非常复杂的方式来解决,但最后我尝试了这个,结果证明就是这么简单。
检查你的元素并找到它的 ng-repeat 值,然后
var button = element(by.repeater('button in buttons')).getText()
您还需要让浏览器以某种方式静置几秒钟,以便在离子弹出窗口实际上不存在时无法解决测试。
为了那个原因,browser.sleep(3000);
就是这样!但是,将另一个按钮放在那里被证明是一个小问题。var button = element(by.repeater('button in buttons')).get(0)
或.get(1)
return undefined 不是函数。
喜欢的请采纳答案!如果我弄清楚如何获得另一个按钮,我会在这里发布。