我是使用WebDriver进行自动化测试的新手,所以我有几个问题只是想清除一下我的脑海。在几页上,我仅通过针对浏览器或OS的功能定位了这些示例,就看到了在不同平台上执行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提供的库来运行测试并在不同的OS和浏览器上进行验证吗?

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

谢谢

最佳答案

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

不含 Selenium 网格的:

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

使用Selenium Grid:

Selenium Grid更常用于您提到的目标(并在您链接到的另一篇文章中进行了引用),它是一台服务器,它允许多个测试实例在远程计算机上的不同Web浏览器中运行。更具介绍性的文档为here,更具前瞻性的文档为here

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

  • 在本地(或公司有机器可远程访问的任何地方)运行on your own hardware
  • 使用像Sauce Labs或Testing Bot的online service

  • this Sauce Labs page和测试Bot here中展示了一个不错的“在Java中看起来像什么”,用于提供在线服务以提供浏览器。

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

    关于移动设备
    关于here,有一些很好的讨论,讨论了您希望移动浏览器测试的“真实程度”如何,因为iPhoneDriverAndroidDriver很大程度上基于WebView的使用,与真实情况不太接近。他们现在发现自己已被ios-driverSelendroidAppium取代。

    总结

    因此,要回答我认为与您相处的问题,



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

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

    10-04 22:39
    查看更多