使用 WebDriver 针对不同的平台(浏览器、操作系统)?
Posted
技术标签:
【中文标题】使用 WebDriver 针对不同的平台(浏览器、操作系统)?【英文标题】:Targeting different platforms (Browser, OS) using WebDriver? 【发布时间】:2013-12-06 06:19:27 【问题描述】:我是使用 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】:这是一个很好的问题。我将尝试将其分解为更小的信息包,以便希望对老手和新手都有意义。
没有 Selenium 网格:
对于初学者,可以为您希望在其上运行测试的所有不同浏览器/操作系统组合使用单独的驱动程序。缺点是您必须为每个浏览器的驱动程序进行一些(尽管通常是最小的)代码调整。这也意味着打破DRY principle。要了解有关编写此类测试的更多信息,请查看this documentation。 (另请注意,如果您想通过 CI 在 Jenkins 之类的东西上在每个构建上运行这些测试,您需要让实际的浏览器在您自己的硬件上的从属设备上运行,但这些更多的是 DevOps 问题。)
使用 Selenium 网格:
更常用于您提到的目标(并在您链接到的另一篇文章中引用),Selenium Grid 是一个服务器,它允许多个测试实例在远程机器上的不同 Web 浏览器中运行。更多面向介绍的文档是here,更具前瞻性的文档是here。
在本地或云端运行: 使用 Selenium Grid,您将采用以下两种方式之一。
-
在本地运行on your own hardware(或您的公司有机器可以远程进入的任何地方)
使用 online service,例如 Sauce Labs 或 Testing Bot
在this Sauce Labs page 和测试机器人here 中显示了一个很好的“这在Java 中的样子”,用于提供在线服务提供浏览器。
Selenium 可以用多种语言编写: Selenium 遵循WebDriver API,对于 C#、Java、Perl、php、Python、Ruby、JavaScript (Node) 或其他语言,您仍然可以使用其中任何一种编写测试脚本(并且它们为其中一些提供“框架” officially,而其他人是社区驱动的)并且仍然可以在所有现代浏览器中稳定运行运行测试。
关于移动设备 关于here 有一些很好的讨论,讨论了您希望移动浏览器测试“接近真实”的程度,因为iPhoneDriver 和androidDriver 主要基于通过WebView 使用,这不太接近真实的东西。他们现在发现自己被ios-driver、Selendroid 和Appium 取代。
总结一下
所以要回答我认为你的意思,
... 可以在不同的操作系统和浏览器上运行测试并验证它们 通过使用 Selenium 提供的库
答案是您可以使用 Selenium Grid 和在线服务,或者您必须使用基本 Selenium/Selenium Server 以及许多其他库来进行测试所有现代浏览器和操作系统的组合,但我相信很多商店都会这样做,因为他们有经验和专业知识来实现它。
编写一次并跨浏览器测试的替代(非 Selenium)选项: 如果您有一个具有 JavaScript 经验的团队,并且您希望在没有 Selenium 开销的情况下实现跨浏览器测试的相同目标, Automates JavaScript Unit Testing with Sauce Labs (以前称为 Browser Swarm)将是一个不错的选择。
【讨论】:
好问题和好答案。只是为了确认一件事,Browser Swarm (browserswarm.com) 已经消失了,对吧?我现在看到的只是一个俄罗斯洪流讨论板。 是的,他们拥有域名,但现在位于swarm.jquery.org,所以我会更新我的答案中的链接。 嗯...不,经过进一步调查,它们(Browser Swarm 和 jQuery 的 TestSwarm)实际上是两个不同的东西。来自i-programmer.info/news/167-javascript/…,“微软与 appendTo 和 Sauce Labs 合作创建了 BrowserSwarm,这是一个开源的、基于云的 JavaScript 自动测试工具...... BrowserSwarm 非常感谢 Mozilla 的 TestSwarm,它做同样的工作但除非您自己设置服务器,否则不会对公众开放使用。另一方面,BrowserSwarm 可让您注册并使用其测试设施。” 感谢@xpt 和良好的挖掘!我本来打算指向 Sauce Labs 的解决方案,你是对的,我错误地认为它与 jQuery 交易,但它只是由 John Resig 启动的一个类似的开源项目。以上是关于使用 WebDriver 针对不同的平台(浏览器、操作系统)?的主要内容,如果未能解决你的问题,请参考以下文章
Selenium - Webdriver API /ActionChains API