量角器不适用于 windows 7 上的 Safari

Protractor not working for Safari on windows 7

我正在尝试使用 windows 7 在 safari 上 运行 量角器 e2e 测试用例。它抛出以下错误:

[10:27:59] I/local - Starting selenium standalone server...
[10:27:59] I/launcher - Running 1 instances of WebDriver
[10:28:00] I/local - Selenium standalone server started at http://10.1.69.133:65294/wd/hub
[10:28:01] E/launcher - The best matching driver provider org.openqa.selenium.edge.EdgeDriver can't create a new driver instance for Capabilities [{
ceptSslCerts=true, trustAllSSLCertificates=true, name=safari-tests, count=1, browserName=safari, directConnect=false, sharedTestFiles=true}]
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: 'DENXD7OShore41p', ip: '10.1.69.133', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_112'
Driver info: driver.version: unknown
[10:28:01] E/launcher - WebDriverError: The best matching driver provider org.openqa.selenium.edge.EdgeDriver can't create a new driver instance for
apabilities [{acceptSslCerts=true, trustAllSSLCertificates=true, name=safari-tests, count=1, browserName=safari, directConnect=false, sharedTestFile
true}]
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: 'DENXD7OShore41p', ip: '10.1.69.133', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_112'
Driver info: driver.version: unknown
    at WebDriverError (c:\Git\operator\ui\node_modules\selenium-webdriver\lib\error.js:27:5)
    at Object.checkLegacyResponse (c:\Git\operator\ui\node_modules\selenium-webdriver\lib\error.js:639:15)
    at parseHttpResponse (c:\Git\operator\ui\node_modules\selenium-webdriver\http\index.js:538:13)
    at client_.send.then.response (c:\Git\operator\ui\node_modules\selenium-webdriver\http\index.js:472:11)
    at ManagedPromise.invokeCallback_ (c:\Git\operator\ui\node_modules\selenium-webdriver\lib\promise.js:1379:14)
    at TaskQueue.execute_ (c:\Git\operator\ui\node_modules\selenium-webdriver\lib\promise.js:2913:14)
    at TaskQueue.executeNext_ (c:\Git\operator\ui\node_modules\selenium-webdriver\lib\promise.js:2896:21)
    at asyncRun (c:\Git\operator\ui\node_modules\selenium-webdriver\lib\promise.js:2820:25)
    at c:\Git\operator\ui\node_modules\selenium-webdriver\lib\promise.js:639:7
    at process._tickCallback (internal/process/next_tick.js:103:7)
From: Task: WebDriver.createSession()
    at Function.createSession (c:\Git\operator\ui\node_modules\selenium-webdriver\lib\webdriver.js:329:24)
    at Builder.build (c:\Git\operator\ui\node_modules\selenium-webdriver\builder.js:458:24)
    at Local.DriverProvider.getNewDriver (c:\Git\operator\ui\node_modules\protractor\built\driverProviders\driverProvider.js:37:33)
    at Runner.createBrowser (c:\Git\operator\ui\node_modules\protractor\built\runner.js:198:43)
    at c:\Git\operator\ui\node_modules\protractor\built\runner.js:277:30
    at _fulfilled (c:\Git\operator\ui\node_modules\q\q.js:834:54)
    at self.promiseDispatch.done (c:\Git\operator\ui\node_modules\q\q.js:863:30)
    at Promise.promise.promiseDispatch (c:\Git\operator\ui\node_modules\q\q.js:796:13)
    at c:\Git\operator\ui\node_modules\q\q.js:604:44
    at runSingle (c:\Git\operator\ui\node_modules\q\q.js:137:13)
[10:28:01] E/launcher - Process exited with error code 199

这是我的 protractor.conf.js 文件的代码。出错后我对配置进行了一些更改,比如我添加了 selenium 地址并删除了 acceptSslCerts=true, trustAllSSLCertificates=true 但在那之后我遇到了同样的错误。

/*global jasmine */
var SpecReporter = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './e2e/**/*.e2e-spec.ts'
  ],
  capabilities: {
    browserName: 'safari',
        name: 'safari-tests',
        directConnect: false,
        seleniumAddress: 'http://localhost:4444/wd/hub'
  },
maxInstances: 1,
  baseUrl: 'http://localhost:3000/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 300000,
    isVerbose : true,
    includeStackTrace : true,
    print: function() {}
  },
  useAllAngular2AppRoots: true,
  onPrepare: function() {
     require('ts-node').register({
      project: 'e2e'
    });
    jasmine.getEnv().addReporter(new SpecReporter());
    browser.ignoreSynchronization = true;
  }
};

是否需要一些其他配置才能在 Safari 上 运行 它。

Windows 的 Safari 是 discontinued years ago 并且安装仍然存在的旧 Safari 5 exe 不会帮助您实现任何有用的测试自动化。

所以永远不要从其他 the official site 下载 Safari,否则您可能会在其中安装特洛伊木马。

您只能使用 Mac OSX 测试 Safari,或者您可以尝试使用 Sauce Labs / BrowserStack / Testing Bot / 其他云测试提供商在您不熟悉的浏览器中进行测试已在本地安装。