【问题标题】:WebDriver - impossible switch from FFDriver to ChromeDriver or IEDriverWebDriver - 不可能从 FFDriver 切换到 ChromeDriver 或 IEDriver
【发布时间】:2011-12-09 10:44:05
【问题描述】:

我正在尝试在 Firefox 中创建一个大型 selenium 套件,但我也想知道在 Chrome 或 IE 中进行所有这些测试会有多困难,即使页面只是以不同的方式呈现并且已经很困难链接它们并使其他驱动程序工作。

有什么建议或经验可以分享吗?在此先感谢 Lorenzo。

【问题讨论】:

    标签: internet-explorer selenium webdriver selenium-chromedriver selenium-firefoxdriver


    【解决方案1】:

    我发现 Selenium 对跨浏览器不太友好。许多小怪癖会阻止单个测试在所有支持的浏览器上顺利运行。当然,很大程度上取决于被测试页面的复杂程度以及测试代码的复杂程度(我假设这是正在编码而不是记录)。

    一个可能的解决方案是在 WebDrivers 之上创建一个抽象层,该层公开常见操作,同时根据浏览器实例规范化行为(想想 jQuery 的工作原理)。

    【讨论】:

    • 这根本不是我的经验。如果您提供了“阻止单个测试顺利运行的小怪癖”的具体示例,这可能会很有用。
    • “取决于被测试页面的复杂程度”。我没有示例(具体示例已作为错误报告提交),但我有大量测试通过 IE8 但在 Firefox 或 Chrome 中没有通过,所以这不是我的想象或轻率的观察。
    • 在我的应用程序中,一些输入框的开发方式在 FF 中为每个框,其中 2 个;一显示一隐藏,您必须在隐藏的真实输入框上单击显示到数字,而不是在 Chrome 中,我只能看到隐藏的已经可见和可数字化。
    【解决方案2】:

    一般来说,这种场景很适合模板模式。将其与页面对象模式相结合,因为您使用的是 Webdriver,您应该能够最大限度地减少重复代码。

    这个想法是您将创建某种帮助对象来执行常用步骤。跨浏览器的大多数步骤都是相同的。但是由于您的 UI 会根据浏览器而变化,因此某些操作将需要自定义步骤。因此,您将拥有从抽象基础继承大部分步骤的具体实现,但在 UI 差异导致无法重用相同基础代码的情况下实现特定功能。

    例如,在您有两个输入框的页面上,您的 Firefox 实现所需操作将需要两次点击,而您的 Chrome 实现只会点击一次。登录和导航步骤(理论上)将是相同的,并且可以通过基类共享。

    您在测试框架的 SetUp 方法中配置您的帮助对象(页面工厂等)。您的测试调用辅助对象上的适当方法来执行操作,然后您验证结果。

    参考文献:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-06
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      相关资源
      最近更新 更多