【问题标题】:Is there a way to run a specific version of a browser in a sandboxed fashion when using WebDriver?使用 WebDriver 时,有没有办法以沙盒方式运行特定版本的浏览器?
【发布时间】:2018-04-30 22:59:06
【问题描述】:

目前,假设您的机器上安装了所有这些浏览器并且这些浏览器的版本与您的驱动程序版本兼容,则可以在不同的浏览器上运行相同的测试。

有没有办法,例如库或其他所有东西,允许我们在同一浏览器的不同版本上运行相同的测试,按需下载这些浏览器(有点像WebDriverManager与驱动程序)?

我们想要一个可在每台机器和每一个操作系统上运行的测试工具,我们不想依赖任何已经安装在该机器上的浏览器。 一个允许我们选择在什么浏览器和什么版本上运行测试的工具,它下载该浏览器的沙盒或虚拟版本,然后运行测试。 我也听说过 Saucelabs,但测试中的系统无法通过公开的 URL 访问,因为它们处于开发环境中。

我认为我们可以使用 Docker,但在这种情况下,我们必须使用 Headless 浏览器,并且我们希望能够看到测试实际在做什么。

提前致谢。

【问题讨论】:

    标签: testing cross-browser webdriver


    【解决方案1】:

    您不再需要(就像我们在黑暗的过去那样)管理我们自己的基础架构,让机器运行浏览器实例并配置 Selenium Grid。

    SauceLabs 是云中的Selenium Grid,绝对是这里推荐的方法。他们提供广泛(不断增长的)platforms 数组。

    在云中为您处理好所有基础架构后,问题变为正确向 SauceLabs 提供 DesiredCapabilities

    我强烈建议您也使用 Jenkins 及其 Sauce OnDemand 插件,它允许您选择目标环境,同时将跨设备测试集成到您的构建管道中。

    但是,在您的测试代码中为 SauceLabs 构建 DesiredCapabilities 对象并不是一项简单的练习,如果不遵守大量纪律,可能会导致难以维护意大利面条式代码。

    有一些 NuGet 包可以解决 SauceLabs DesiredCapabilities 问题并与 Jenkins 集成。

    Saucery 是 SauceLabs 的 DesiredCapability 工厂。完全披露:我编写了 Saucery 并维护它。

    Sauery 引入了所有你想要的依赖项,允许你编写测试:

    • 桌面浏览器(简单扩展 SauceryBase)

    Selenium;

    或原生应用测试:

    • IOS(简单扩展 SauceryIOSBase);或
    • Android(简单扩展 SauceryAndroidBase)设备

    Appium

    home page 提供benefitsHow To

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 2020-06-17
      • 2011-06-25
      • 2013-01-03
      相关资源
      最近更新 更多