等待 Protractor 与页面同步时出错:在 Protractor IE11 执行中

Posted

技术标签:

【中文标题】等待 Protractor 与页面同步时出错:在 Protractor IE11 执行中【英文标题】:Error while waiting for Protractor to sync with the page: in Protractor IE11 execution 【发布时间】:2016-01-12 13:13:47 【问题描述】:

我在 IE11 中遇到错误

等待量角器与页面同步时出错:“根元素(主体)没有注入器。这可能意味着它不在 ng-app 内。

当我执行量角器脚本时。我设置了 framework: jasmine2 但它没有帮助。但是在 Chrome 和 Firefox 中同样可以正常工作。

以下是我的代码:

// The address of a running selenium server.
  seleniumAddress: 'http://localhost:4444/wd/hub',
  //config.seleniumAddress = 'http://127.0.0.1:4444/wd/hub';
  maxSessions: 1,

 capabilities: 
  
  'browserName': 'internet explorer'
  ,
      framework: 'jasmine',
              specs: ['TC_Sprint2_Case1.js'],

onPrepare: function()    
      beforeEach(function() 
        browser.driver.manage().window().setSize(1280, 1024);
    );  

      jasmine.getEnv().addReporter(new htmlReporter(
         baseDirectory: 'D:/Manoj/TestReport3/',

         docTitle: 'Test Case Execution Details',
         docName: 'BYTestReport.html',
//Meta builder      
  metaDataBuilder: function(spec, descriptions, results, capabilities)
            var metaData = 
                description: descriptions.join('|'),
                 passed: results.passed(),
                 os: 'Windows 7',               
                 browser: 
                  name: capabilities.caps_.browserName
                  , version: capabilities.caps_.version
                
              ;
            if(results.items_.length > 0) 
              var result = results.items_[0];
             metaData.message = result.message;                    
               metaData.trace = result.trace.stack;                         
                       
return metaData;
  // Meta Builder ends 
));
   , 

【问题讨论】:

您是在 Angular 页面还是非 Angular 页面上进行测试? @GirishSortur 我正在测试角度页面。但是当我们首先在 Internet Explorer 中执行时,它会启动“localhost:28813”然后它会导航到我的角度页面。所以这里的问题是量角器开始执行在非角度页面本身上,它不会等到到达角度页面。 如果browser.ignoreSynchronization = false 在您的 conf.js onPrepare() 函数或 beforeAll() 函数中是一个角度页面,您能否尝试设置它,看看它是否有效?此外,如果您在任何特定元素处遇到错误,请等到使用 browser.waitForAngular().then(function()//Check for element); 加载 angular 我试过 onPrepare: function() browser.driver.manage().window().maximize(); browser.ignoreSynchronization = false; beforeEach(function() browser.get('login.newrelic.com/'); browser.ignoreSynchronization = false; ); 但在这两种情况下我都会收到错误为“错误而等待量角器与页面同步:“根元素(主体)没有注入器。这可能意味着它不在 ng-app 中。” 【参考方案1】:

我们可以用browser.driver.get('https://google.co.in');代替browser.get('https://google.co.in');

之前我使用browser.get(URL)。它导致了同步问题。当我使用browser.driver.get(URL)时。它解决了问题。

【讨论】:

【参考方案2】:

在您的配置中,尝试将 nativeEvents 设置为 false:

capabilities:
    browserName: 'internet explorer'
    nativeEvents:false
,

IE 有时会在启动时挂起,这似乎为我解决了这个问题。话虽这么说,还有其他事情可能导致 IE 无法绑定。

【讨论】:

你的 ng-app 在什么标签上? html class="no-js ng-scope" ng-app="busApp" - 这是应用程序中使用的标签 听起来你需要尝试 browser.waitForAngular 如果你还没有。 尝试如下。但存在错误。 ** it('Testcase-TC_BY_08-question_Alternate flow', function() browser.waitForAngular(); page_validation(); Login(); Questionpage_validation(); ); ** 我相信正确的格式是:browser.waitForAngular().then(function()page_validation(); Login(); Questionpage_validation(););你必须记住,Protractor 中的大多数事情都会返回必须正确处理的承诺。

以上是关于等待 Protractor 与页面同步时出错:在 Protractor IE11 执行中的主要内容,如果未能解决你的问题,请参考以下文章

Jasmine在等待Protractor与页面同步时出错:“hooks is undefined”

执行量角器测试时“失败:等待量角器与页面同步时出错”

错误超时等待量角器在 11 秒后与页面同步

使用Ajax同步请求时,等待时间过长增加页面提示问题

量角器:单击按钮后如何等待页面完成?

使用带有 Angular2 和 Socket.io 的量角器运行 e2e 测试