我试图让nightwatch调用browser.url('http://www.google.com')
函数调用,但它是未定义的(以下代码来自http://nightwatchjs.org/guide的官方文档)
module.exports = {
'Demo test Google' : function (browser) {
browser
.url('http://www.google.com')
.waitForElementVisible('body', 1000)
.setValue('input[type=text]', 'nightwatch')
.waitForElementVisible('button[name=btnG]', 1000)
.click('button[name=btnG]')
.pause(1000)
.assert.containsText('#main', 'Night Watch')
.end();
}
};
我设置的项目更简单,但我的问题是nightwatch.js中提到的任何browser
个参数的文档都是未定义的
如果我这样做
console.log(JSON.stringify(browser))
我明白了:
{"capabilities":{},"globals":{},"sessionId":null,"options":{"screenshots":false,"skip_testcases_on_fail":false,"log_screenshot_data":true,"desiredCapabilities":{"browserName":"internet explorer","javascriptEnabled":true,"acceptSslCerts":true,"platform":"ANY","marionette":true,"name":"MARSBPCHART"}},"launchUrl":"http://localhost","launch_url":"http://localhost","Keys":{"NULL":"","CANCEL":"","HELP":"","BACK_SPACE":"","TAB":"","CLEAR":"","RETURN":"","ENTER":"","SHIFT":"","CONTROL":"","ALT":"","PAUSE":"","ESCAPE":"","SPACE":"","PAGEUP":"","PAGEDOWN":"","END":"","HOME":"","LEFT_ARROW":"","UP_ARROW":"","RIGHT_ARROW":"","DOWN_ARROW":"","ARROW_LEFT":"","ARROW_UP":"","ARROW_RIGHT":"","ARROW_DOWN":"","INSERT":"","DELETE":"","SEMICOLON":"","EQUALS":"","NUMPAD0":"","NUMPAD1":"","NUMPAD2":"","NUMPAD3":"","NUMPAD4":"","NUMPAD5":"","NUMPAD6":"","NUMPAD7":"","NUMPAD8":"","NUMPAD9":"","MULTIPLY":"","ADD":"","SEPARATOR":"","SUBTRACT":"","DECIMAL":"","DIVIDE":"","F1":"","F2":"","F3":"","F4":"","F5":"","F6":"","F7":"","F8":"","F9":"","F10":"","F11":"","F12":"","COMMAND":"","META":""},"assert":{},"currentTest":{"name":"Demo test Google","module":"MARSBPCHART","results":{"steps":[],"passed":0,"failed":0,"errors":0,"skipped":0,"tests":0,"testcases":{},"timestamp":"Mon, 12 Mar 2018 18:00:40 GMT","time":0},"group":""}}
我试图通过在我的根目录中创建一个pages/
文件夹来设置pageObjects工作,在那里我试图定义url
方法/函数但是我不太确定我是不是应该创建此方法/函数来调用的人,或者如果nightwatch.js的底层库为我创建这个
browser.navigate
对我来说也是未定义的。
再次,这是我需要自己实现的还是已经包含在守夜人中了?
下面是我的nightwatch.json
文件:
{
"src_folders" : ["./tests"],
"output_folder" : "reports",
"custom_commands_path" : "",
"custom_assertions_path" : "",
"page_objects_path" : "./pages",
"globals_path" : "",
"selenium" : {
"start_process" : false,
"start_session": false,
"server_path" : "./bin/selenium-server-standalone-3.9.1.jar",
"log_path" : "",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "",
"webdriver.gecko.driver" : "",
"webdriver.edge.driver" : "./bin/MicrosoftWebDriver.exe"
}
},
"test_settings" : {
"default" : {
"launch_url" : "http://localhost",
"selenium_port" : 4444,
"selenium_host" : "localhost",
"silent": true,
"screenshots" : {
"enabled" : false,
"path" : ""
},
"desiredCapabilities": {
"browserName": "internet explorer",
"marionette": true,
"javascriptEnabled": true
}
},
"chrome" : {
"desiredCapabilities": {
"browserName": "chrome"
}
},
"edge" : {
"desiredCapabilities": {
"browserName": "MicrosoftEdge"
}
}
}
}
这是我的测试/ MARSBPCHART.js文件:
var searchCommands = {
submit: function () {
this.waitForElementVisible('@submitButton', 3000)
.click('@submitButton')
.api.pause(1000);
return this; // Return page object for chaining
}
};
module.exports = {
testMe: function() {
console.log('in testMe')
},
url: 'http://google.com',
commands: [searchCommands],
elements: {
searchBar: { selector: 'input[name=q]' },
submitButton: { selector: '[type=submit]' }
},
page: function() {
console.log('in page of MARSBPCHARTPage');
},
MARSBPCHART: function() {
console.log('in MARSBPCHARTPage.js\' this.MARSBPCHARTPage')
}
};
这是整个项目:
https://github.com/cotyembry/UITests
编辑1:我没有提到我在另一个终端窗口中手动运行java -jar ./bin/selenium-server-standalone-3.9.1.jar
感谢您的所有时间和帮助,我真的很感激