量角器 - seleniumAddress 和 directConnect 有什么区别

Protractor - What is the difference between seleniumAddress and directConnect

我不清楚 运行 我的量角器测试有什么区别:

directConnect: true/false,
seleniumAddress: 'http://localhost:4444/wd/hub',

另外,为什么这行得通?我在 运行 我的测试中使用什么?

I've not declare any of the above options in my config file, and I've all my tests running.

这是我 运行 我的测试时的输出:

[16:26:42] I/launcher - Running 1 instances of WebDriver
[16:26:42] I/local - Starting selenium standalone server...
[16:26:46] I/local - Selenium standalone server started at http://193.167.1.94:57674/wd/hub

I/local 意思是我在本地 运行ning? directConnect 是默认选项吗?

我在一些堆栈溢出 post 中看到了 I/hosted。这意味着他们正在使用外部网格?

seleniumAddress

您可以将 selenium 服务器或 selenium 网格 url 提供给 seleniumAddress

您可以在测试

的相同或不同机器上启动 selenium 服务器或网格

脚本驻留

1.1) 本地硒服务器

 . Selenium server run on same machine where test scripts reside

 . When running test, browser opened on the machine where selenium server running

 . Communicate Path:  ( in same machine where test script reside)

    test script -> selenium server -> webdriver binary -> browser

1.2) 远程硒服务器

. Selenium server run on remote machine where test scripts **NOT** reside

. When running test, browser opened on the remote machine where selenium server running  

. Communicate Path: ( cross two machines )

   test script -> test script machine 
               -> selenium server  (on remote machine)
               -> webdriver binary (on remote machine)
               -> browser          (on remote machine)

1.3)硒格

. Grid use Master/Slave 

. Multiple Slave machines register to One Master machine

. Each Slave can install couple kinds of browsers

. Slave tell Master it can provide the kinds of browser and 
  max browser instances running in parallel when register to Master

. Master will determine each test open browser on which Slave 
  by test required browser type and not exceed the max browser instances on slave

. Communicate Path: ( cross three machines )

    test script -> test script machine 
                -> master machine
                -> selenium server  (on choosen slave machine)
                -> webdriver binary (on choosen slave machine)
                -> browser          (on choosen slave machine)

directConnect

. When directConnect: true, seleniumAddress will be ignored (if both configured)

. Only chrome and firefox support directConnect so far

. Communicate Path: ( in same machine where test script reside) 

    test script -> webdriver binary -> browser

使用 seleniumAddress 你可以看到测试脚本的日志在启动 selenium server/grid.[=15 的终止 window 中与 webdriver 通信=]

从日志中您可以获得如下信息:

  • 测试脚本使用哪个定位器来查找元素
  • find/operate 元素的步骤完成或失败
  • 当测试用例失败时,它无法传达哪个元素。

这些信息对调试测试脚本非常有用

默认情况下使用 directConnect 量角器不会在单独的终止中启动 webdriver 二进制文件 window 并且不会将通信日志定向到文件中。

因此它不适用于调试测试脚本。

seleniumAddress是selenium服务器所在的位置运行。如果未指定,则在执行框架时将创建一个新的 selenium 服务器实例(通常在默认的 selenium 端口 4444 上)。

directConnect 不同,它允许您直接向浏览器驱动程序发送命令,完全跳过 seleniumServer。根据下面的 conf linked 的定义是:

If true, Protractor will connect directly to the browser Drivers at the locations specified by chromeDriver and firefoxPath. Only Chrome and Firefox are supported for direct connect.

This 是示例 conf.ts 文件的 link,所有选项和解释都列在默认设置中。我发现这是一个非常有用的参考。

另请参阅此 relevant prior thread 了解更多信息。