我正在使用 nightwatch 自动测试网络功能。我有一个测试,我试图从本地测试环境外部的特定休息端点返回数据。当我从正在运行的 nightwatch 测试中执行此搜索时,它返回空结果。当我从网站执行相同的搜索时,它会返回我期望的数据。基于守夜人的呼叫和基于网站的呼叫都是从同一虚拟机 (VM) 执行的。
我以为我已经正确配置了 nightwatch.json。例如,以下 nightwatch 属性(除了 nightwatch 所需的奇数 selenium_port 外)与我用于在网站本身上运行的网站 url 和登录信息相匹配:
"test_settings": {
"default": {
"launch_url": "http://localhost:8080",
"selenium_port": 4444,
"selenium_host": "localhost",
"silent": true,
"screenshots": {
"enabled": true,
"path": "./tests/e2e/screenshots"
},
"globals": {
"username": "my-user-name",
"password": "my-password"
}
值得注意的是,登录请求(使用上述“全局”凭据)按预期工作。登录服务端点与搜索端点 VM 位于不同的 VM 上(两者都与我的本地网站 VM 不同)。
我不知道如何从守夜人的背景下诊断这个问题。使用“--verbose”运行测试不会返回其他有用信息。此外,selenium-server 日志也没有向我显示任何有用的信息。例如,这是实际的测试:
'Assert Search Button Returns Data for Username or Id': function (browser) {
let myPage = browser.page.mypage();
myPage.setValue('@mySearchBox', 'test value');
console.log('right before search: ');
// here is the call that returns the empty response from Nightwatch
myPage.setValue('@mySearchBox', browser.Keys.ENTER);
console.log('right after search: ');
}
,如您所见,我在失败(以及不正常工作)调用之前和之后执行控制台消息。控制台输出上没有显示它们之间的任何内容。
对于诊断和解决我的问题的任何帮助,我将不胜感激。可能(可能)基于 Nightwatch 的搜索没有正确到达端点,但我不知道如何判断。感谢您的任何想法。