茉莉花 + 量角器 byID 失败

jasmine + protractor byID failing

这是我的 HTML,它存在且有效。当我使用 WebStorm 中断测试用例时,我可以检查页面并看到这个元素就好了...

<a id="privacyPolicy1234" on-tap="goPrivacyPolicy()" class="disable-user-behavior">Privacy Policy</a>

这是我的 Jasmine 测试,找不到元素。

it("should list a privacyPolicy ", function() {

    privacyPolicyElement = element(by.id('privacyPolicy1234'));
    expect(privacyPolicyElement.getText()).toContain("Privacy Policy");

错误回来了

 Message:
    NoSuchElementError: No element found using locator: By.id("privacyPolicy1234")

编辑:

还尝试将其放在一行中,并在我期望的 true

处得到 false
expect(element(by.id('privacyPolicy1234')).isPresent()).toBe(true);

事实证明,我正在页面加载前对其进行测试。

作为解决方法,我添加了

it("should list a privacyPolicy ", function() {
    browser.sleep(2000);
    privacyPolicyElement = element(by.id('privacyPolicy1234'));

使用显式等待,而不是使测试不可靠且速度较慢的browser.sleep()。例如,您可以等待 "privacy policy" 元素出现:

var EC = protractor.ExpectedConditions,
    privacyPolicyElement = element(by.id('privacyPolicy1234'));

browser.wait(EC.presenceOf(privacyPolicyElement), 5000);

expect(privacyPolicyElement.getText()).toContain("Privacy Policy");

请务必注意,在这种情况下量角器会等待 最多 5 秒,每 500 毫秒检查一次元素是否存在(默认情况下)。一旦满足条件,它就停止等待。如果 5 秒后,该元素仍未出现 - 您将收到超时异常。