Jasmine 如果套件中的文件超过1个,则“量角器--套件”选项将失败
第一次问这样的问题,我希望我做得对 每当我在一个包含多个文件的套件上运行Jasmine 如果套件中的文件超过1个,则“量角器--套件”选项将失败,jasmine,protractor,Jasmine,Protractor,第一次问这样的问题,我希望我做得对 每当我在一个包含多个文件的套件上运行dragrator authenticated.conf.js--suite suitename时,它都会失败-它将登录到我的dragrator.helper.loginToPage()登录到基本页面(localhost:3000),然后在不关闭网页的情况下抛出错误 我在同一个文件夹中抛出了另一个*.spec.js文件,运行了完全相同的命令,但失败了 错误 /usr/local/lib/node_modules/protra
dragrator authenticated.conf.js--suite suitename
时,它都会失败-它将登录到我的dragrator.helper.loginToPage()
登录到基本页面(localhost:3000),然后在不关闭网页的情况下抛出错误
我在同一个文件夹中抛出了另一个*.spec.js文件,运行了完全相同的命令,但失败了
错误
/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:113
var template = new Error(this.message);
^
NoSuchElementError: no such element
(Session info: chrome=44.0.2403.107)
(Driver info: chromedriver=2.15.322448 (52179c1b310fec1797c81ea9a20326839860b7d3),platform=Linux 3.16.0-44-generic x86_64)
at new bot.Error (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/error.js:113:18)
at Object.bot.response.checkResponse (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/atoms/response.js:106:9)
at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:377:20
at [object Object].promise.ControlFlow.runInFrame_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1877:20)
at [object Object].promise.Callback_.goog.defineClass.notify (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:2464:25)
at [object Object].promise.Promise.notify_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:563:12)
at Array.forEach (native)
at Object.goog.array.forEach (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/array/array.js:203:43)
at [object Object].promise.Promise.notifyAll_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:552:16)
at [object Object].goog.async.run.processWorkQueue [as _onTimeout] (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/async/run.js:125:21)
From: Task: WebElement.sendKeys()
at [object Object].webdriver.WebDriver.schedule (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:360:15)
at [object Object].webdriver.WebElement.schedule_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:1815:23)
at [object Object].webdriver.WebElement.sendKeys (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:1986:17)
at Object.exports.loginToPage (/home/allison/Devspace/client/test/e2e/helperFunctions.js:11:63)
at Suite.<anonymous> (/home/allison/Devspace/client/test/e2e/authenticated/students.spec.js:41:21)
at addSpecsToSuite (/usr/local/lib/node_modules/protractor/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:743:25)
at Env.describe (/usr/local/lib/node_modules/protractor/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:713:7)
at jasmineInterface.describe (/usr/local/lib/node_modules/protractor/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:3219:18)
at Object.<anonymous> (/home/allison/Devspace/client/test/e2e/authenticated/students.spec.js:1:63)
at Module._compile (module.js:456:26)
students.spec.js片段
protractor.helper.loginToPage();
var expected = protractor.ExpectedConditions;
var newStudentUrl = "";
it('should show new student in listings when the new student form is filled and Save button is clicked', function() {
browser.get('/en/student/listing/509');
...
helperFunctions.js
'use strict'
// An example configuration file.
exports.config = {
directConnect: true,
chromeOnly: true,
onPrepare: function() {
//browser.driver.get(env.baseUrl)
protractor.helper = require('./helperFunctions.js');
},
baseUrl: 'http://localhost:3000/',
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
// Framework to use. Jasmine 2 is recommended.
framework: 'jasmine2',
// Spec patterns are relative to the current working directly when
// protractor is called.
specs: [
'authenticated/*.spec.js',
'invoices/*.spec.js',
'partners/*.spec.js',
'quotes/*.spec.js',
'settings/*.spec.js',
],
// to specify a single FILE to run, run "protractor authenticated.conf.js --specs file.spec.js"
// to specify ONE suite to run, type "protractor authenticated.conf.js --suite quotes"
suites: {
quotes: 'quotes/*.spec.js',
students: 'authenticated/*.spec.js',
invoices: 'invoices/*.spec.js',
settings: 'settings/*.spec.js',
partners: './partners/*.spec.js'
},
// Options to be passed to Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 240000,
showColors: true
},
allScriptsTimeout: 50000, //takes a while to login and load STudent page
};
exports.loginToPage = function(url) {
browser.driver.get('http://localhost:3000/');
browser.waitForAngular();
browser.driver.findElement(by.css('input[name="email"]')).sendKeys('user@something.com');
browser.driver.findElement(by.css('input[name="password"]')).sendKeys('password');
browser.driver.findElement(by.css('button[type="submit"]')).click();
return browser.driver.wait(function() {
return browser.driver.getCurrentUrl().then(function(url) {
return /\/en\/$/.test(url);
});
}, 15000);
};
我最近看到很多这样的行为,而且。好像那里有个虫子。我有随机不及格的测试。我已经尝试了所有我能想到的方法来修复它们,但唯一有效的方法似乎是放置一个短的
浏览器。睡眠帮助轻推等待:)
尝试在提交按钮之后或调用getCurrentUrl()
之前放置一个browser.sleep(420)
。(420毫秒,因为这很有趣:)但这方面的一些东西一直在为我工作)
虽然不是一个解决方案(使用browser.sleep
会伤害我的灵魂),但它现在是一个解决办法。这比不可靠的测试要好 非常感谢!请原谅,我的回复太晚了,我正在做其他事情。我不知道这是另一个浏览器等待/页面未加载错误-我被错误消息误导,说是“.sendKeys()”我不是100%确定解决方案,但到目前为止似乎有效的是,添加了browser.driver.sleep(1000)
(不确定浏览器.sleep和浏览器.driver.sleep是否有很大区别),并将我的loginToPage()
移动到authenticated.conf.js:onPrepare()
。运行时对loginToPage()的任何额外调用——套件都会给我带来错误。