从一天到另一天,我无法与我正在测试的角度页面进行交互。
我得到的唯一结果是:
Started
A Jasmine spec timed out. Resetting the WebDriver Control Flow.
F
页面上有这个:
<html lang="sv" class="no-js" data-ng-app="app">
所以它应该有效吗? 我尝试检查iFrames并增强了allScriptTimeout:360000,但没有任何帮助。
这是我的配置:
var TIMEOUT = 360000;
var HtmlScreenshotReporter = require('protractor-jasmine2-screenshot-reporter');
var reporter = new HtmlScreenshotReporter({
dest: 'report/screenshots',
filename: 'my-report.html'
});
exports.config = {
seleniumAddress: 'http://dmc-l01-ap08.dmc.de:4448/wd/hub',
baseUrl: 'https://int.system.com/',
specs: [
'./UseCases/protractorTestcaseNightly.js',
],
Capabilities: [
{
'browserName': 'chrome',
shardTestFiles: false,
maxInstances: 1,
maxSessions: -1,
restartBrowserBetweenTests: true,
},
],
getPageTimeout: TIMEOUT,
allScriptsTimeout: TIMEOUT,
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: TIMEOUT,
includeStackTrace : true,
isVerbose : true,
},
framework: "jasmine2",
onPrepare: function () {
browser.driver.manage().window().maximize();
browser.driver.manage().deleteAllCookies();
jasmine.getEnv().addReporter(reporter);
var reporters = require('jasmine-reporters');
var junitReporter = new reporters.JUnitXmlReporter({
savePath: 'report/xml',
consolidateAll: false,
filePrefix: 'xmloutput'
});
jasmine.getEnv().addReporter(junitReporter);
}
};
更新: 我添加了
rootElement: 'html',
到我的配置。但没有改变。在点击第一个元素之前,我还从页面截取了屏幕截图。在屏幕截图中,我可以看到我要点击的元素。
这是我的Testspec:
describe('Start testspec | ', function () {
it('opens the start', function () {
browser.get("/de-de/connect/").then(function () {
console.log("1"); //works
browser.executeScript('localStorage.clear();sessionStorage.clear();'); //works (?)
console.log("2"); //works
expect(element(by.xpath('//*[@class="btn-link"]'))).toBeTruthy(); //works
console.log("3"); //works
browser.sleep(3000); //works
element(by.css('.ms-linklist-typ-1 a')).click(); //DOES NOT WORK :(
browser.sleep(3000); //works
});
});
});
我必须点击&#34; btn-link&#34; / css元素,因为这是cookie层,必须首先点击才能到达任何其他元素... 任何想法?
答案 0 :(得分:1)
您似乎错误地使用了超时配置。 $http
仅用于后端应用程序脚本不适用于整个Jasmine规范
请查看下面解释的三个超时
allScriptsTimeout - 此超时配置指示时间
应用程序需要完成后端脚本的运行
getPageTimeout - 表示等待页面的时间 负载
因此,在您的情况下,您增加ons.bootstrap()
.controller('AppController', function($http) {
...
});
以增加整体规范的超时
尝试进行以下更改,看看是否可以解决问题
allScriptTimeout
此外,量角器假定您的angular-app根元素为jasmineNodeOpts.defaultTimeoutInterval
。请参阅以下文档中的以下摘录。由于您的 jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 120000,
includeStackTrace : true,
isVerbose : true,
},
位于其他元素上,因此可能会相应更新body
/ ** *用于容纳角度应用程序的元素的CSS选择器 - 这个 默认为*'body',但如果ng-app在后代上则是必需的 的。 * /
ng-app
答案 1 :(得分:0)
看起来我找到了修复程序。通过更改我的安装版本,我的测试再次运行。我看起来某些版本之间存在不兼容性。它现在适用于:
Node LTS (6.10.0)
Selenium Server Standalone 3.0.1
protractor@5.1.1
npm@4.1.2