javascript - Protractor 找不到密码为 id 的 gmail 输入

标签 javascript angularjs protractor

我正在尝试设置 Protractor 来测试我的应用程序,但它需要通过 gmail 进行身份验证,而且我一直在尝试登录:

describe('Vivace Home page', function() {

  var hasClass = function (element, cls) {
    return element.getAttribute('class').then(function (classes) {
      return classes.split(' ').indexOf(cls) !== -1;
    });
  };

  beforeEach(function() {

    browser.ignoreSynchronization = true;
    browser.get('/');

    var emailInput = browser.driver.findElement(by.id('Email'));
    emailInput.sendKeys('paulG@gmail.com')

    var nextButton = browser.driver.findElement(by.id('next'));

    nextButton.click().then(function() {
      browser.pause();
      var passwordInput = browser.driver.findElement(by.id('Passwd'));
      console.log(passwordInput);
      passwordInput.sendKeys('11111');
      // var signInButton = browser.driver.findElement(by.id('signIn'));
    })
  });

  it('should have the correct title', function() {
    expect(browser.getTitle()).toEqual('InRhythm - Vivace');
  });
});

我可以看到 Protractor 打开 gmail 页面,输入电子邮件并单击下一步按钮,当我执行 browser.pause 时,我实际上可以在带有检查器的页面上看到 ID 为“Passwd”的密码输入但我无法访问它来完成我的登录。

当我删除 browser.pause 时出现此错误

失败:没有这样的元素:无法定位元素:{"method":"id","selector":"Passwd"}

最佳答案

等待become visible :

var EC = protractor.ExpectedConditions;
var passwordInput = element(by.id('Passwd'));

browser.wait(EC.visibilityOf(passwordInput), 5000);
passwordInput.sendKeys('11111');

关于javascript - Protractor 找不到密码为 id 的 gmail 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35730890/

相关文章:

javascript - NodeJS Promise,延迟返回值

javascript - 如何在 Angularjs 中设置 dropdownboxlist 的值?

selenium - Protractor 查找父元素

javascript - 如果在 Protractor js 中找到相同的类列表,则按文本选择下拉选项

javascript - 当单选按钮选择为否时禁用要求消息

javascript - 缩短 Javascript

javascript - ng-click : pass data selectedItem between pages angularjs

angularjs - 在没有专用 WebDriver 实现的浏览器上运行 Protractor?

javascript - 禁用 KendoGrid 中过滤列的动画

javascript - 将变量传递给指令 AngularJS