茉莉+量角器byID失败

时间:2015-07-01 00:03:26

标签: javascript selenium selenium-webdriver jasmine protractor

这是我的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);

2 个答案:

答案 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'));