【问题标题】:Protractor - if element is displayed, click on it doesn't work with by.buttonText量角器 - 如果显示元素,单击它不适用于 by.buttonText
【发布时间】:2019-04-29 05:20:14
【问题描述】:

由于我现在使用带有可变文本的单个按钮,因此我已从通过 id 查找元素切换到 by.buttonText。我的测试开始失败了。

这是我的按钮

<button type="button" class="btn btn-primary" ng-click="vm.watchUnwatchDriver()">{{vm.model.isWatched ? 'Un-' : ''}}Watch Driver</button>

这会根据vm.model.isWatched 评估为“Watch Driver”或“Un-Watch Driver”。

最初我将我的按钮设置为 Watch Driver,以便我测试 Un-Watch 按钮是否已显示,如果是则可能单击它。

我已经开始看到这条消息了

失败:使用定位器找不到元素:by.buttonText("Un-Watch Driver")✗

我的测试是这样的

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);
    });

});

【问题讨论】:

    标签: angularjs selenium selenium-webdriver protractor


    【解决方案1】:

    尝试打印按钮文本并观察例如:

    var unwatchBtn = element(by.css('.btn.btn-primary'));
    
    unwatchBtn.getText().then(function(text){
    console.log(text);
    })
    

    然后在 by.buttonText 中使用该文本

    【讨论】:

    • 聪明,但我有更多关于那个类的按钮。
    • 使用特定的定位器,例如:
    【解决方案2】:

    你可以试试element(by.partialButtonText('Watch Driver')),这两种情况都可以。

    【讨论】:

      【解决方案3】:

      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);
              }
          });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-15
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-05
        相关资源
        最近更新 更多