Javascript 如何使用量角器和文件配置等待元素出现?

Javascript 如何使用量角器和文件配置等待元素出现?,javascript,protractor,Javascript,Protractor,我正在尝试使用量角器等待输入“Username”出现,然后在上面插入值。我怎么做 browser.get('http://localhost:5555/#'); var login = browser.driver.findElement(by.id('Username')); 用于等待特定条件,即元素出现或可见。用于填充输入 var login = element(by.id('Username')); var EC = protractor.ExpectedConditions; brow

我正在尝试使用量角器等待输入“Username”出现,然后在上面插入值。我怎么做

browser.get('http://localhost:5555/#');
var login = browser.driver.findElement(by.id('Username'));
用于等待特定条件,即元素出现或可见。用于填充输入

var login = element(by.id('Username'));
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(login)).then(function() {
    login.sendKeys('myuser');
});
这属于您的规范,而不是您的配置。

用于等待特定条件,即元素出现或可见。用于填充输入

var login = element(by.id('Username'));
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(login)).then(function() {
    login.sendKeys('myuser');
});

这属于您的规范,而不是您的配置。

如果您的应用程序是一个角度应用程序,并且您做的一切都是正确的,那么您无需等待元素或页面加载

量角器为你做。有关详细信息,请参阅API文档


如果你感兴趣,也可以检查一下。在我的博客上写了更多信息

如果你的应用程序是一个有角度的应用程序,并且你做的一切都是正确的,那么你不需要等待元素或页面加载

量角器为你做。有关详细信息,请参阅API文档


如果你感兴趣,也可以检查一下。在我的博客上写了更多的信息

我想有两件事

  • 使用元素的快捷方式版本(by.id())
  • 将变量设置为let,而不是var
  • 为等待提供超时,否则它将是无止境的,并且只有在测试超时时才会失败(为等待浪费时间)
  • 提供等待失败错误消息(等待函数中的第三个参数)-在失败时具有更好的可读性
  • 无需将
    sendKeys()
    放入回调,即使没有此选项,量角器控制流也会以正确的顺序执行命令
下面是代码示例:

let loginField = $('#Username');
let EC = protractor.ExpectedConditions;
browser.wait(EC.visibilityOf(loginField), 3000, 'Login field should be visible before entering text');
loginField.sendKeys('myuser');

我会假设两件事

  • 使用元素的快捷方式版本(by.id())
  • 将变量设置为let,而不是var
  • 为等待提供超时,否则它将是无止境的,并且只有在测试超时时才会失败(为等待浪费时间)
  • 提供等待失败错误消息(等待函数中的第三个参数)-在失败时具有更好的可读性
  • 无需将
    sendKeys()
    放入回调,即使没有此选项,量角器控制流也会以正确的顺序执行命令
下面是代码示例:

let loginField = $('#Username');
let EC = protractor.ExpectedConditions;
browser.wait(EC.visibilityOf(loginField), 3000, 'Login field should be visible before entering text');
loginField.sendKeys('myuser');

无需解析
browser.wait
browser.wait(EC.presenceOf(login))返回的承诺;login.sendKeys('myuser')@FlorentB。你说得对,我只是觉得它在我看来更具可读性。可读性有时是一件“个人”事情:)不过,代码越“扁平”,一般来说就越好。
presenceOf
不会检查元素的可见性,使用
visibilityOf
elementtobelickable
确保元素可见。因为元素可能存在于DOM中,但不可见。在这种情况下,等待将成功,但sendKeys可能会失败。无需解析
浏览器返回的承诺。等待
浏览器。等待(EC.presenceOf(login));login.sendKeys('myuser')@FlorentB。你说得对,我只是觉得它在我看来更具可读性。可读性有时是一件“个人”事情:)不过,代码越“扁平”,一般来说就越好。
presenceOf
不会检查元素的可见性,使用
visibilityOf
elementtobelickable
确保元素可见。因为元素可能存在于DOM中,但不可见。在这种情况下,等待将成功,但sendKeys可能会失败