如何在Safari上运行Nightwatch测试?

4
我找不到任何有效的夜间守卫配置,可以在没有包含整个Selenium jar的情况下使用safari。夜间守卫文档说:
“使用Selenium独立服务器曾经是管理各种浏览器驱动程序和服务的默认标准,但从夜间守卫1.0开始,除非您测试Internet Explorer等旧版浏览器,否则不再需要,也不建议使用。”
safari算作旧版浏览器吗?有人有一个可以针对safari运行测试的工作夜间守卫1.x配置文件示例吗?
MacOS:High Sierra 10.13.6
Safari:12.0.2
夜间守卫:v1.0.18
我的当前nightwatch.json适用于Chrome,但不适用于safari:
{
  "src_folders": [
    "__tests__/e2e/tests"
  ],
  "output_folder": "__tests__/e2e/reports",
  "custom_commands_path": "",
  "custom_assertions_path": "",
  "page_objects_path": "",
  "globals_path": "",
  "webdriver": {
    "start_process": true
  },
  "test_settings": {
    "default": {
      "desiredCapabilities": {
        "browserName": "chrome",
        "javascriptEnabled": true,
        "acceptSslCerts": true,
        "chromeOptions": {
          "args": [
            "--window-size=1440,900"
          ]
        }
      }
    },
    "devChrome": {
      "launch_url": "https://DEV_HOST",
      "globals": {
        "env": "dev"
      },
      "webdriver": {
        "server_path": "node_modules/chromedriver/lib/chromedriver/chromedriver.exe",
        "port": 9515
      }
    },
    "devSafari": {
      "launch_url": "https://DEV_HOST",
      "globals": {
        "env": "dev"
      },
      "webdriver": {
        "server_path": "/usr/bin/safaridriver",
        "port": 9515
      }
    }
  }
}

运行devSafari配置时出现的错误信息如下: 无法启动服务器:必须指定至少一个配置参数。

2个回答

2

我在 GitHub 的 nightwatch 团队(https://github.com/nightwatchjs/nightwatch-docs/issues/94)上得到了一些帮助,现在我有一个适用于 Nightwatch 1.x 和 Safari 10+ 的示例配置文件。需要注意的是:所谓“工作正常”,是指浏览器能够打开并且我可以看到 Nightwatch 与之交互。测试实际上并不像在 Chrome 中那样通过,但很可能这只是小型浏览器差异导致的,可以在测试用例本身中解决。

{
  "src_folders": [
     "__tests__/e2e/tests"
   ],
   "output_folder": "__tests__/e2e/reports",
   "custom_commands_path": "",
   "custom_assertions_path": "",
   "page_objects_path": "",
   "globals_path": "",

   "webdriver": {
     "start_process": true,
     "server_path": "/usr/bin/safaridriver",
     "port": 4445
   },

   "test_settings": {
     "default": {
       "desiredCapabilities": {
         "browserName": "safari",
         "javascriptEnabled": true,
         "acceptSslCerts": true
       }
     },
     "safari": {
       "launch_url": "localhost",
       "desiredCapabilities": {
         "browserName":"safari"
       },
       "globals": {
         "env": "dev"
       }
     }
   }
}
  1. 运行:/usr/bin/safaridriver --enable
  2. 打开Safari并检查 Develop > Allow Remote Automation,然后关闭Safari。
  3. 运行Nightwatch。

0

使用 Safari 10+,您只需要将 safari 作为 browserName 使用。然后在运行测试时确保指定正确的环境。对于我的配置,这意味着传递选项 --env safari。以下是我的 nightwatch.conf.js 文件:

module.exports = {
  src_folders: ['tests/e2e/specs'],
  output_folder: 'tests/e2e/reports',
  selenium: {
    start_process: true,
    server_path: require('selenium-server').path,
    host: '127.0.0.1',
    port: 4444,
    cli_args: {
      'WebDriver.chrome.driver': require('chromedriver').path,
    },
  },
  test_settings: {
    chrome: {
      desiredCapabilities: {
        browserName: 'chrome',
      },
    },
    safari: {
      desiredCapabilities: {
        browserName: 'safari',
        javascriptEnabled: true,
        acceptSslCerts: true,
      },
    },
  },
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接