等待 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 执行中的主要内容,如果未能解决你的问题,请参考以下文章