0

我正在使用 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 的搜索没有正确到达端点,但我不知道如何判断。感谢您的任何想法。

4

0 回答 0