我正在尝试在 Firefox 中创建一个大型 selenium 套件,但我也想知道所有这些测试在 Chrome 或 IE 中工作会有多困难,即使因为页面只是以不同的方式呈现并且已经很难链接它们和让其他司机工作。
有什么建议或经验可以分享吗?在此先感谢,洛伦佐。
我正在尝试在 Firefox 中创建一个大型 selenium 套件,但我也想知道所有这些测试在 Chrome 或 IE 中工作会有多困难,即使因为页面只是以不同的方式呈现并且已经很难链接它们和让其他司机工作。
有什么建议或经验可以分享吗?在此先感谢,洛伦佐。
一般来说,这种场景是模板模式的一个很好的候选者。将其与页面对象模式相结合,因为您使用的是 Webdriver,您应该能够最大限度地减少重复代码。
这个想法是您将创建某种执行常用步骤的辅助对象。跨浏览器的大多数步骤都是相同的。但是由于您的 UI 会根据浏览器而变化,因此某些操作将需要自定义步骤。因此,您将拥有从抽象基础继承大部分步骤的具体实现,但在 UI 差异使得无法重用相同基础代码的情况下实现特定功能。
例如,在您有两个输入框的页面上,您的所需操作的 Firefox 实现将有两次点击,而您的 Chrome 实现将只有一次。登录和导航步骤(理论上)将是相同的,并且可以通过基类共享。
您可以在测试框架的 SetUp 方法中配置您的辅助对象(页面工厂等)。您的测试调用辅助对象上的适当方法来执行操作,然后您验证结果。
参考:
我发现 Selenium 根本不是很友好的跨浏览器。许多小怪癖会阻止单个测试在所有支持的浏览器上顺利运行。很多当然取决于被测试的页面有多复杂以及测试代码有多复杂(我假设这是被编码而不是记录)。
一个可能的解决方案是在 WebDrivers 之上创建一个抽象层,该层公开常见操作,同时根据浏览器实例规范化行为(想想 jQuery 的工作原理)。