使用WebDriver定位不同的平台(浏览器,操作系统)?

时间:2013-11-21 16:37:16

标签: testing selenium cross-browser webdriver cross-platform

我是使用WebDriver进行自动化测试的新手,所以我有几个问题只是为了清除一些问题。在几页中,我看到了在不同平台上执行WebDriver测试的示例,只是将这些测试用于浏览器或操作系统的功能。

capability= DesiredCapabilities.firefox();
capability.setBrowserName("firefox"); 
capability.setPlatform(org.openqa.selenium.Platform.ANY);

capability= DesiredCapabilities.internetExplorer();
capability.setBrowserName("iexplore"); 
capability.setPlatform(org.openqa.selenium.Platform.WINDOWS);

如上所述: Executing tests Concurrently on different OS and Browsers with WebDriver using Java and TestNG

因此,如果我理解正确的话,实际上可以通过使用Selenium提供的库来运行测试并验证不同操作系统和浏览器上的测试吗?

如果是这样,这些测试对于典型的跨浏览器/平台html / JavaScript问题有多准确?

谢谢

1 个答案:

答案 0 :(得分:5)

这是一个很好的问题。我将尝试将其分解为较小的信息包,以便对老的专业人士和新手都有意义。

没有Selenium Grid:

对于初学者,可以为希望运行测试的所有不同浏览器/操作系统组合使用单独的驱动程序。缺点是您必须为每个浏览器的驱动程序进行一些(尽管通常是最小的)代码调整。这也意味着打破DRY principle。要了解有关编写此类测试的更多信息,请查看this documentation。 (另请注意,如果您希望通过CI在Jenkins之类的内容上对每个版本运行这些测试,则需要让您自己的硬件上的从属服务器上运行实际的浏览器,但这些更多是DevOps关注。)

使用Selenium Grid:

更常用于您提到的目标(并在链接到的其他帖子中引用),Selenium Grid是一个服务器,允许多个测试实例在远程计算机上的不同Web浏览器中运行。针对此的更多介绍文档为here,更多具有前瞻性的文档为here

在本地或云中运行 使用Selenium Grid,您将采用以下两种方式之一。

  1. 在本地运行on your own hardware(或在您的公司有远程机器的任何地方)
  2. 使用online service Sauce Labs 测试机器人
  3. this Sauce Labs page和测试机器人here中显示了一个很好的“在Java中看起来可能是什么样的”,因为有一个在线服务提供浏览器。

    Selenium可以用一种语言写成: 一些Selenium遵循WebDriver API,对于C#,Java,Perl,PHP,Python,Ruby,JavaScript(Node)或其他语言,您仍然可以在其中任何一个中编写测试脚本(并且它们为某些人提供“框架”)这些officially,而其他人是社区驱动的),并且仍然在所有现代浏览器中运行测试。

    关于移动设备  对here进行了一些讨论,讨论了您希望移动浏览器测试“接近真实”的情况,因为iPhoneDriverAndroidDriver主要基于通过WebView使用,这不太接近真实的东西。他们现在发现自己被ios-driverSelendroidAppium取代。

    总结

    所以回答我认为你正在接受的事情,

      

    ...可以运行测试并验证不同操作系统和浏览器上的测试   使用Selenium提供的库

    答案是您可以使用Selenium Grid和在线服务,或者您必须使用基本Selenium / Selenium Server 以及许多其他库来测试所有现代浏览器和操作系统组合,但我相信很多商店都是这样做的,因为他们拥有丰富的经验和专业知识。


    备用(非硒)选项,可以一次编写并浏览浏览器: 如果你有一个拥有JavaScript经验的团队,并且你希望在没有Selenium开销的情况下实现跨浏览器测试的相同目标,那么 Automates JavaScript Unit Testing with Sauce Labs (以前称为Browser Swarm)将是一个不错的选择。