由于我现在使用带有可变文本的单个按钮,因此我已从按ID查找元素切换为by.buttonText。我的测试开始失败。
这是我的按钮
<button type="button" class="btn btn-primary" ng-click="vm.watchUnwatchDriver()">{{vm.model.isWatched ? 'Un-' : ''}}Watch Driver</button>
这根据vm.model.isWatched
评估为“监视驱动程序”或“监视驱动程序”。
最初,我将按钮设置为“监视驱动程序”,以便测试是否显示了“监视”按钮,如果可能,则单击该按钮。
我已经开始看到此消息
失败:使用定位器找不到元素:by.buttonText(“监视驱动程序”)✗
我的测试看起来像这样
describe('Watch/Un-Watch Driver Test', function() {
var watchBtn = element(by.buttonText('Watch Driver'));
var unwatchBtn = element(by.buttonText('Un-Watch Driver'));
it('should set Driver watch status to default: un-watched', function() {
unwatchBtn.isDisplayed().then(function(visible) {
if (visible) {
unwatchBtn.click();
}
});
expect(unwatchBtn.isDisplayed()).toBe(false);
});
it('should watch a driver', function() {
watchBtn.click();
expect(unwatchBtn.isDisplayed()).toBe(true);
});
it('should un-watch a driver', function() {
unwatchBtn.click();
expect(unwatchBtn.isDisplayed()).toBe(false);
});
});
答案 0 :(得分:0)
尝试打印按钮文本并观察例如:
proc sql
然后在by.buttonText中使用该文本
答案 1 :(得分:0)
isPresent()对我来说似乎还可以。它可以成功检测是否存在具有该名称的按钮。
it('should set Driver watch status to default: un-watched', function() {
unwatchBtn.isPresent().then(function(visible) {
if (visible) {
unwatchBtn.click();
expect(unwatchBtn.isPresent()).toBe(false);
} else {
expect(unwatchBtn.isPresent()).toBe(false);
}
});
});
答案 2 :(得分:0)
您可以尝试element(by.partialButtonText('Watch Driver'))
,它在两种情况下都可以使用。