【问题标题】:How to confirm id is not present in jasmine test case如何确认 jasmine 测试用例中不存在 id
【发布时间】:2014-09-11 22:19:09
【问题描述】:

我正在为 angularjs 测试编写 jasmine 测试用例。在一个视图中,学生看不到该按钮。我正在根据 id 长度进行检查,但我得到了expected '1' instead of '0'。按钮不在视图中,但它仍然可以看到 id。

还有其他条件需要检查吗?

element.all(by.id('create_course_button')).then(function(items) {
  expect(items.length).toBe(0);
}); 

【问题讨论】:

  • 你能分享你的页面HTML代码吗?根据您提供的代码,元素 在 DOM 中确实存在,但在 GUI 上不可见

标签: angularjs jasmine protractor


【解决方案1】:

你可以试试expect(by.id('create_course_button')).not.toExist();

你也可以试试:

expect($(document)).not.toContain($el);

另一个建议:

expect('#create_course_button').not.toExist();

【讨论】:

  • 当我使用 toContain 我得到 TypeError: Object By.id("create_course_button") has no method 'indexOf' 当我使用 toExist 我得到 TypeError: Object [object Object] has no method 'toExist'
  • 你能试试 expect('#create_course_button').not.toExist() 吗?
【解决方案2】:

我的猜测是您的按钮仍然存在于 DOM 中,但被 css display: nonevisibility: hidden 隐藏。

如果正确,您可以使用 WebdriverJS 的.isDisplayed() API 来检查元素是否正在显示:

expect(element(by.id('create_course_button')).isDisplayed()).toEqual(false);

【讨论】:

    【解决方案3】:

    如果您想测试可见性,请使用isDisplayed()

    expect($('#foo').isDisplayed()).toBe(true);
    

    如果要测试元素是否存在于 DOM 中,请使用 browser.isElementPresent()

    expect(browser.isElementPresent(by.css('#foo'))).toBe(false);
    

    请记住,您需要将定位器传递给browser.isElementPresent(by.xxx)

    【讨论】:

    • 我在 Angular2+ 中使用它时得到Cannot find name 'browser'。你能告诉我从哪里包含browser吗?
    猜你喜欢
    • 1970-01-01
    • 2014-08-07
    • 2021-07-11
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多