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

vuk*_*icb 5 testing selenium cross-platform webdriver cross-browser

我是使用WebDriver进行自动化测试的新手,因此我只想澄清一些问题.在几页上,我看到了在不同平台上执行WebDriver测试的示例,只是将这些测试用于浏览器或操作系统的功能.

capability= DesiredCapabilities.firefox();
capability.setBrowserName("firefox"); 
capability.setPlatform(org.openqa.selenium.Platform.ANY);
Run Code Online (Sandbox Code Playgroud)

要么

capability= DesiredCapabilities.internetExplorer();
capability.setBrowserName("iexplore"); 
capability.setPlatform(org.openqa.selenium.Platform.WINDOWS);
Run Code Online (Sandbox Code Playgroud)

如下所述: 使用Java和TestNG在WebDriver上同时在不同的操作系统和浏览器上执行测试

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

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

谢谢

Eri*_*son 5

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

没有Selenium Grid:

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

使用Selenium Grid:

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

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

  1. 本地运行您自己的硬件(或在您的公司有远程机器的任何地方)
  2. 使用Sauce LabsTesting Bot在线服务

这个Sauce Labs页面和测试机器人在这里显示了一个很好的"在Java中看起来可能是什么样的",因为它提供了一个在线服务.

Selenium可以用多种语言编写: Selenium遵循WebDriver API,对于C#,Java,Perl,PHP,Python,Ruby,JavaScript(节点)或其他语言,您仍然可以在任何这些语言中编写测试脚本(并且它们提供了一些这些的"框架" 正式,有的则是社区驱动),并且仍然有运行测试在所有现代浏览器中运行稳固.

关于移动设备 有过一些很好的讨论,在这里讨论如何"贴近真实的东西",你希望你的手机浏览器的测试是,因为iPhoneDriverAndroidDriver主要是基于通过WebView中使用,这是不太接近真实的东西.他们现在发现自己被ios-driver,SelendroidAppium所取代.

把它们加起来

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

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

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


一次编写和测试浏览器的备用(非硒)选项: 如果您有一个具有JavaScript经验的团队,并且您希望在没有Selenium开销的情况下实现跨浏览器测试的相同目标,则使用Sauce Labs自动化JavaScript单元测试(以前的浏览器Swarm)将是一个不错的选择.