茉莉花 + 量角器 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 秒后,该元素仍未出现 - 您将收到超时异常。
这是我的 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 秒后,该元素仍未出现 - 您将收到超时异常。