如何在量角器中通过文本从ng转发器中选择一个选项?

时间:2017-01-17 10:15:08

标签: angularjs protractor

enter image description here

需要选择带有文本“rajeshwar_9032”的第二个选项。下面是我写的单击ng-repeat选项的功能,但我无法这样做。请帮忙。

this.SelectProfile = function(Profile){             
        element.all(by.repeater("profile in vm.allProfiles")).each(function (elm) {
            var desiredprofile = elm.element(by.xpath('//div/div/div/div/span[contains(text(), "'+Profile+'")]'));
            desiredprofile.click();
        });

将文本传递到参数'Profile'

2 个答案:

答案 0 :(得分:1)

您可以使用by.cssContainingText('<<>css>', '<<text>>')而不是这样的xpath来使其更稳定。

请参阅here了解更多详情

您可以执行以下操作

 this.SelectProfile = function(Profile) {
   return element.all(by.repeater("profile in vm.allProfiles")).filter(function(elm) {
     return elm.element(by.css('.username')).getText().then(function(text) {
       return text === profile;
     })
   }).first().element(by.css('.username')).click()
 }

答案 1 :(得分:1)

let alert = this.alertCtrl.create({
            title: 'Kmart',
            message: 'Do you want exit kmart app ?',
            buttons: [
              {
                text: 'Cancel',
                role: 'cancel',
                handler: () => {
                  this.logger.info("cancel clicked")
                }
              },
              {
                text: 'ok',
                handler: () => {
                  this.platform.exitApp();
                }
              }
            ]
          });

       this.platform.registerBackButtonAction(() => {
          console.log('back button pressed')
          if (this.navCtrl.canGoBack()) {
            console.log('nav can go back')
            this.navCtrl.pop()
          } else {
            //here i have to show the alert for login and home page
            alert.present();
          } 
        }, 100);

谢谢,@ AdityaReddy我对你的建议做了一些小调整,效果很好。希望这有帮助。

Finally arrived at a solution. Below code works consistently.