【问题标题】:Protractor not finding an element in angular 6 app量角器在 Angular 6 应用程序中找不到元素
【发布时间】:2019-04-17 02:13:24
【问题描述】:

project.po.ts 中的内容 ->

newProjectButton() {
  return element(by.id('new-project'));
}

newProjectButtonText() {
  return this.newProjectButton().getText();
}

spec 文件中的内容 ->

describe('Projects', function () {
 let page: RMLProjectsPage;
 page = new RMLProjectsPage();  

 it('should create new project and its first workspace', () => {

   page.navigateToProjectsPage();

   expect(page.newProjectButtonText()).toEqual('New Project');

   ...

在此测试之前运行测试并通过登录测试。但是,成功导航到项目页面后,找不到新项目按钮。错误是 Failed: No element found using locator: By(css selector, *[id="new-project"])

现在如果我把 browser.ignoreSynchronization = true;在页面构建之后,它会找到该按钮,但它会以反应形式使其他查询失败。在 Angular 应用程序中,我们不应该这样做 browser.ignoreSynchronization = true;对?我在这里错过了什么......?

【问题讨论】:

    标签: angular protractor


    【解决方案1】:

    browser.ignoreSynchronization = true; 已弃用,请尝试browser.waitForAngularEnabled(false);

    要回答您的问题,如果您提出browser.waitForAngularEnabled(true);,那么您要求量角器等待所有 http 请求完成。如果您的应用程序有连续的网络调用,那么browser.waitForAngularEnabled(false); 就会出现。

    注意:如果您使用的是browser.waitForAngularEnabled(false);,那么您必须使用显式等待。

    希望答案对你有所帮助。

    更多信息请参考https://www.protractortest.org/#/timeouts

    【讨论】:

    • browser.waitForAngularEnabled(false); 结合const ec = protractor.ExpectedConditions;browser.wait(ec.elementToBeClickable(page.nextComputeButton()), 5000); 似乎正在工作...... browser.ignoreSynchronization = true 在那里所以这个等待之前没有工作
    猜你喜欢
    • 2016-02-03
    • 2015-11-03
    • 2019-07-04
    • 1970-01-01
    • 2020-07-03
    • 2013-10-23
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多