测试【免费下载链接】protractorE2E test framework for Angular apps项目地址https://gitcode.com/gh_mirrors/pr/protractor点击查看免费下载本文以 Protractor 的 服务器配置文档 为主线系统讲解测试脚本与浏览器驱动之间的桥接方式如何在本机部署并启动 Standalone Selenium Server、如何连接远程云测服务BrowserStack、Sauce Labs、TestObject、Kobiton以及如何跳过服务器直连 Chrome/Firefox 驱动。读完本文你将能根据团队的基础设施与网络环境为 Protractor 配置出最合适的 driver provider并从配置类型定义与lib/driverProviders/源码层面理解每项配置的真实作用。Selenium Server 在 Protractor 架构中的角色使用 Protractor 执行 E2E 测试时必须明确如何连接到浏览器驱动。测试脚本基于 WebDriver API 编写并不直接操作浏览器进程而是通过 Selenium Server 中转。服务器在测试脚本与浏览器驱动之间扮演代理角色[Test Scripts] ------------ [Selenium Server] ------------ [Browser Drivers]服务器将脚本发出的命令转发给驱动再把驱动的响应返回给脚本服务器可以同时服务不同语言编写的多套脚本服务器可以启动并管理多种版本、多种实现的浏览器。Protractor 的配置项在 config.ts 中定义其中与 Selenium Server 相关的选项主要分为五类本机启动独立服务器seleniumServerJar、连接已在运行的服务器seleniumAddress、远程云测服务sauceUser/sauceKey、browserstackUser/browserstackKey等以及直连驱动directConnect。从源码看lib/driverProviders/index.ts中的buildDriverProvider()会按优先级依次检查这些配置并实例化对应的 DriverProvider 实现。本机部署Standalone Selenium Server前置条件JDK要在本机运行 Selenium Server需要安装 Java Development KitJDK。用java -version验证是否已安装java -version使用 webdriver-manager 安装并启动服务器Protractor 自带webdriver-manager命令行工具按以下步骤即可手动完成服务器安装与启动执行更新命令下载服务器 jar 与 ChromeDriverwebdriver-manager update执行启动命令webdriver-manager start启动后会产生大量以INFO开头的日志最后一行应为Info - Started org.openqa.jetty.jetty.Server表示服务器已就绪。在测试会话期间保持服务器持续运行。在配置文件中把seleniumAddress设置为服务器地址默认值为http://localhost:4444/wd/hubexports.config { seleniumAddress: http://localhost:4444/wd/hub, // 其余配置... };从源码看webdriver-manager update下载的二进制文件默认放在 webdriver-manager 的selenium/目录下若未显式指定seleniumServerJarlocal.ts 会通过new WdmSeleniumServer().getBinaryPath()自动在默认位置查找 jar找不到时会抛出错误并提示运行webdriver-manager update。从测试脚本内部启动服务器如果希望 Protractor 在启动测试时自动拉起 Standalone Selenium Server可在配置文件中设置以下选项seleniumServerJar—— Standalone Selenium Server 的 jar 文件路径需指定一个真实文件位置seleniumPort—— 启动服务器所用的端口未指定时默认 4444seleniumArgs—— 传递给服务器的命令行参数数组完整参数列表可通过带-help标志启动服务器查看。参考 config.ts 的补充说明还有几个与本地启动相关的可选配置seleniumServerStartTimeout—— 等待本地 Standalone Selenium Server 启动的超时时间默认 30000mslocalSeleniumStandaloneOpts—— 一个对象直接透传给 SeleniumServer 类作为参数可包含port、args和jvmArgs若其中指定了args或port会覆盖旧版配置项seleniumArgs与seleniumPortjvmArgs—— 附加的 JVM 命令行参数例如[-Dwebdriver.ie.driverIEDriverServer_Win32_2.53.1.exe]可指定其他浏览器的驱动位置chromeDriver/geckoDriver—— 分别指定 chromedriver 与 geckodriver 二进制路径会以系统属性webdriver.chrome.driver/webdriver.gecko.driver传给 Selenium jar未设置时使用 webdriver-manager 下载的默认版本。在 local.ts 的setupDriverEnv()中可以看到完整启动链路先调用addDefaultBinaryLocs_()补齐 jar 与驱动二进制路径再以兼容逻辑合并seleniumArgs/jvmArgs/seleniumPort推送-Dwebdriver.chrome.driver、-Dwebdriver.gecko.driver等 JVM 参数最后构造SeleniumServer并调用start(timeout)把实际监听地址写回config.seleniumAddress供后续连接使用。连接已在运行的服务器如果 Selenium Server 已由其他进程启动只需设置一个选项seleniumAddress—— 连接到运行中的 Standalone Selenium Server值是一个 URL形如http://localhost:4444/wd/hub。对应源码实现是lib/driverProviders/hosted.ts中的Hosted类它在setupDriverEnv()中仅记录日志并直接使用配置中的地址。此外config.ts 还提供了两个与既有会话/代理相关的补充选项seleniumSessionId允许把 Protractor 挂载到某个已存在的 Selenium 会话上对应 attachSession.ts其quitDriver()为空实现以保持原会话不被关闭webDriverProxy则指定 WebDriver 命令流量经过的代理地址。注意一旦设置了seleniumAddress以下配置将被忽略seleniumServerJar、seleniumPort、seleniumArgs、browserstackUser、browserstackKey、sauceUser、sauceKey。远程 Selenium Server云测平台接入若不想自建服务器可选用托管 Selenium Server 与浏览器驱动的云测服务。Protractor 内置支持 BrowserStack、Sauce Labs、TestObject 与 Kobiton。buildDriverProvider()的选择逻辑见 index.ts会按directConnect→seleniumAddress→testobject→kobiton→browserstack→sauce→seleniumServerJar→mockSelenium的顺序匹配先命中的配置优先且会通过logWarnings()对同时设置的冗余参数输出警告。使用 TestObject 作为远程服务器在配置文件中设置testobjectUser—— TestObject 账户的用户名testobjectKey—— TestObject 账户的 Key。设置这两个选项后kobitonUser、kobitonKey、browserstackUser、browserstackKey、seleniumServerJar、seleniumPort、seleniumArgs、sauceUser、sauceKey都会被忽略。源码实现testObject.ts会把用户名与 Key 写入 capabilities 的testobject.user与testobject_api_key字段并将seleniumAddress固定为https://us1.appium.testobject.com/wd/hub。使用 Kobiton 作为远程服务器在配置文件中设置kobitonUser—— Kobiton 账户的用户名kobitonKey—— Kobiton 账户的 API Key。设置这两个选项后browserstackUser、browserstackKey、seleniumServerJar、seleniumPort、seleniumArgs、sauceUser、sauceKey都会被忽略。源码实现kobiton.ts会把用户名与 Key 写入 capabilities 的kobitonUser/kobitonKey字段并拼接出带鉴权信息的https://user:keyapi.kobiton.com/wd/hub作为seleniumAddress。使用 BrowserStack 作为远程服务器在配置文件中设置browserstackUser—— BrowserStack 账户的用户名browserstackKey—— BrowserStack 账户的 Key。设置这两个选项后seleniumServerJar、seleniumPort、seleniumArgs、sauceUser、sauceKey都会被忽略。可在 capabilities 中可选设置name属性为服务器上的任务命名否则任务只会被分配一个随机哈希。源码实现browserStack.ts会把用户名与 Key 写入 capabilities 的browserstack.user/browserstack.key字段将seleniumAddress固定为http://hub.browserstack.com/wd/hub并通过createAutomateClient建立会话管理客户端其updateJob()会根据测试结果把会话状态更新为completed或error。另外 config.ts 还提供了browserstackProxy用于公司代理环境下的 API 连接。使用 Sauce Labs 作为远程服务器在配置文件中设置sauceUser—— Sauce Labs 账户的用户名sauceKey—— Sauce Labs 账户的 Key。设置这两个选项后seleniumServerJar、seleniumPort、seleniumArgs、browserstackUser、browserstackKey都会被忽略。同样可以在 capabilities 中可选设置name属性为任务命名否则任务会被命名为Unnamed Job。源码实现sauce.ts更为丰富它支持sauceRegionus对应 us-west-1为默认eu对应 eu-central-1、sauceBuild、sauceSeleniumUseHttp、sauceSeleniumAddress、sauceProxy与sauceAgent等扩展配置全部定义见 config.ts最终拼出带鉴权的https://user:keyondemand.saucelabs.com:443/wd/hub作为seleniumAddress。直连浏览器驱动DirectConnectProtractor 可以不经过 Selenium Server直接对 Chrome 与 Firefox 进行测试。在配置文件中设置directConnect: trueexports.config { directConnect: true, SELENIUM_PROMISE_MANAGER: false, framework: jasmine, capabilities: { browserName: chrome, }, specs: [directConnect/*_spec.js], jasmineNodeOpts: { showColors: true, defaultTimeoutInterval: 30000 } };上例取自仓库自带的 spec/directConnectConf.js可直接作为直连模式的配置模板参考。directConnect: true—— 测试脚本直接与 ChromeDriver 或 FirefoxDriver 通信绕过任何 Selenium Server。此模式下seleniumAddress与seleniumServerJar的设置会被忽略若试图使用 Chrome、Firefox 以外的浏览器会抛出错误。直连的优势是测试脚本可能启动得更快、运行更迅速省去了服务器中转的一跳。从源码实现direct.ts可以看到其内部逻辑setupDriverEnv()只接受chrome与firefox两种browserName其他值直接抛出BrowserErrorgetNewDriver()则分别使用selenium-webdriver的 chrome 与 firefox ServiceBuilder 直接创建会话驱动二进制路径优先取chromeDriver/geckoDriver配置未配置时回退到 webdriver-manager 的默认下载位置。另外 config.ts 还提供firefoxPath用于指定 Firefox 应用二进制的路径为null时会在默认位置查找。配置优先级与选择逻辑小结场景需要设置的配置项对应 DriverProvider 源码本机启动 Standalone Selenium ServerseleniumServerJar可选seleniumPort、seleniumArgs、localSeleniumStandaloneOpts、chromeDriver、geckoDriverlocal.ts连接已运行的 Selenium ServerseleniumAddresshosted.ts挂载既有会话seleniumAddressseleniumSessionIdattachSession.tsTestObject 云测testobjectUsertestobjectKeytestObject.tsKobiton 云测kobitonUserkobitonKeykobiton.tsBrowserStack 云测browserstackUserbrowserstackKeybrowserStack.tsSauce Labs 云测sauceUsersauceKeysauce.ts直连 Chrome/Firefox 驱动directConnect: true可选chromeDriver、geckoDriver、firefoxPathdirect.ts实际的 provider 选择发生在 lib/driverProviders/index.ts 的buildDriverProvider()中其判断顺序即上表的优先级顺序同时logWarnings()会对已选中某 provider 但配置中还残留其他 provider 参数的情况输出警告帮助排查配置冗余。仓库中的 scripts/test/driverProviderAttachSession.js 与spec/unit/driverProviders/下的测试用例如 direct_test.js、local_test.js覆盖了这些 provider 的配置解析与行为可作为深入阅读的参考。实践建议单机、内网环境优先选用本机 Standalone ServerseleniumServerJar或webdriver-manager startseleniumAddress追求启动速度且只需 Chrome/Firefox 时使用directConnect需要跨浏览器矩阵或移动设备覆盖时再按团队已有账号选择对应云测平台。任何情况下都应避免同时设置多个 provider 相关参数以免被忽略的配置造成理解偏差。赞分享测试【免费下载链接】protractorE2E test framework for Angular apps项目地址https://gitcode.com/gh_mirrors/pr/protractor点击查看免费下载相关推荐3个理由告诉你为什么OBS Studio是直播录制的最佳选择3个理由告诉你为什么OBS Studio是直播录制的最佳选择 如果你正在寻找一款功能强大、完全免费的开源直播录制软件那么OBS Studio绝对是你的不二之选音视频直播屏幕录制桌面应用视频远程 GitHub MCP Server 接入与配置实战零部署直连 GitHub 官方托管 MCP 服务远程 GitHub MCP Server 接入与配置实战零部署直连 GitHub 官方托管 MCP 服务 导读 本文聚焦 GitHub MCP ServerAI 应用LLM 网关MCP 服务工具调用Prisma 服务器接入 PostgreSQLPostgres 连接器配置、部署与源码原理全解析Prisma 服务器接入 PostgreSQLPostgres 连接器配置、部署与源码原理全解析 导读 本文围绕 Prisma 官方文档中 Postgres后端数据库GraphQL上一篇IPED数据恢复分区扫描针对特定文件系统的优化指南下一篇Vue3 Vant4 Mobile2024最新移动端开发框架Vue3.5Vite8Vant4完美集成指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
