javascript - 有/没有 Selenium 运行 Protractor 的区别?

标签 javascript angularjs selenium selenium-webdriver protractor

检查 Protractor documentation ,我看到有一个选项可以使用 directConnect: true 标志在不使用 Selenium 服务器的情况下运行 Protractor 。

除了后者仅支持 Chrome、Firefox 之外,使用 selenium 服务器运行 Protractor 测试和不使用 selenium 服务器运行 Protractor 测试有什么区别?

最佳答案

首先,目前,您有 5 different built-in options/ways to connect to browser drivers :

  1. 指定seleniumServerJar在本地启动selenium独立服务器
  2. 指定seleniumAddress以连接到正在运行的selenium服务器(本地或远程)
  3. 设置 sauceUsersauceKey 以连接到 Sauce Labs 远程 selenium 服务器
  4. 设置browserstackUserbrowserstackKey以通过BrowserStack使用远程Selenium服务器
  5. 使用 directConnect 直接连接到 Chrome 或 Firefox。您还可以使用其他 chromeDriverfirefoxPath 设置来定义自定义 Chrome 驱动程序和 Firefox 应用程序二进制位置。

前 4 个选项基本上通过“代理”(selenium 服务器)工作:

The server acts as proxy between your test script (written with the WebDriver API) and the browser driver (controlled by the WebDriver protocols). The server forwards commands from your script to the driver and returns responses from the driver to your script.

通过中间 selenium 服务器自动化浏览器而不是直接 webdriver 连接的主要原因是 selenium 服务器,如果充当 Selenium Grid ,允许您跨多个浏览器、多个系统上的多个浏览器扩展/扩展测试,例如,请参阅 Sauce Labs Selenium Grid 。仅供引用,还有BrowserStack service ,除了其他功能之外,它还充当 selenium 服务器,与 Sauce Labs 类似,具有大量不同的功能/配置 - 浏览器和系统。

启动 selenium 服务器(谈到选项 2)并且不使用 directConnect 的另一个用例是,您可能希望在其上运行测试的特定配置。假设您有一台装有 IE 11 的 Windows 计算机和带有 Firefox 35 的 Ubuntu。在这种情况下,您可以将这些计算机配置为将连接到 selenium server/hub 的 selenium 节点。 .

如果您在本地运行测试,并且目标浏览器是 Chrome 或/和 Firefox,请使用 directConnect,您的测试会运行得更快。

但是,如果您在本地运行测试并且需要针对 IE、Safari 或其他浏览器进行测试,则可以选择选项 1-4(通常为 1),因为这些浏览器无法在“直接连接”模式下工作。

另请参阅相关主题:

关于javascript - 有/没有 Selenium 运行 Protractor 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30600738/

相关文章:

javascript - jQuery UI 的小部件 "destroy"方法 - 不一致错误

javascript - 如何使 Angular 模态可调整大小

python - ModuleNotFoundError : No module named 'selenium'

javascript - 嘿谁能告诉我为什么我不从 api 渲染数据

java - 在 webdriver 中使用 cssSelecter 匹配元素的更严格方法是什么

Selenium 服务器无法远程运行 - 启动 Firefox 时出现问题

javascript - 自定义 Parsley.js 异步验证器循环两次

javascript - 为什么 jslint 在检查代码块内的变量定义时会出错

javascript - 我将如何格式化函数粘贴到文本区域的代码?

javascript - 选择所有三态复选框时出现问题