这是我的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")
编辑:
还尝试将其放在一行中,并将false
置于我期望的位置true
expect(element(by.id('privacyPolicy1234')).isPresent()).toBe(true);
答案 0 :(得分:2)
使用显式等待,而不是使测试不可靠且速度较慢的browser.sleep()
。例如,您可以等待“隐私政策”元素出现:
var EC = protractor.ExpectedConditions,
privacyPolicyElement = element(by.id('privacyPolicy1234'));
browser.wait(EC.presenceOf(privacyPolicyElement), 5000);
expect(privacyPolicyElement.getText()).toContain("Privacy Policy");
重要的是要注意,在这种情况下,量角器会等待最多 5秒,每隔500毫秒(默认情况下)检查元素是否存在。一旦满足条件,它就会停止等待。如果在5秒后,该元素仍然不会出现 - 您将获得超时异常。
答案 1 :(得分:0)
原来,我在加载页面之前测试页面。
作为一种解决方法,我添加了
it("should list a privacyPolicy ", function() {
browser.sleep(2000);
privacyPolicyElement = element(by.id('privacyPolicy1234'));