自动化网页测试工具Selenium简介

在进行ASP.NET应用程序的代码重构时,需要在Mozilla、Chrome和Internet Explorer(IE)三种不同的浏览器中反复测试一些网页。这项测试工作变得非常繁琐,作为一名懒惰的程序员,一直在寻找一种简单且免费的方法来自动化网页测试。在网上搜索时,幸运地发现了Selenium。在本文中,将简要介绍Selenium WebDriver,它是Selenium的一个子集。Selenium提供了一个全面的解决方案,用于为Web应用程序进行持续集成测试,并有效地管理测试用例。

Selenium是一个工具套件,用于通过允许浏览器被许多编程语言和测试框架控制来自动化Web浏览器。它支持许多浏览器和平台。Selenium的主要目的是自动化Web应用程序的测试,也可用于自动化重复的基于Web的管理任务。下图显示了Selenium组件。

Selenium IDE

Selenium IDE是一个Firefox插件,用于记录用户与Firefox的交互,并可以回放,允许创建简单的脚本或协助探索性测试。

Selenium Server

Selenium Server接收测试程序的Selenese命令,执行它们,并报告运行这些测试的结果。当测试程序打开浏览器时,Selenium Core会自动注入其中,允许Selenium服务器控制它。Selenium Core是一个JavaScript程序,使用浏览器的JavaScript执行引擎执行Selenese命令。Selenium服务器使用HTTP进行通信,因此任何支持HTTP的编程语言都可以使用Selenium服务器来执行测试脚本。

Selenium Server以前被称为Selenium RC(Remote Control)。

Selenium-WebDriver

WebDriver在Selenium 2.0版本中引入,它提供了一个更简单的编程接口,具有设计良好的面向对象API。它直接调用浏览器,使用浏览器的原生自动化支持,支持的功能取决于使用的浏览器。如果浏览器和测试都在同一台机器上运行,并且测试只使用WebDriver API,那么不需要运行Selenium-Server。

Selenium-Server与Selenium-WebDriver在以下场景中一起使用:

  • 使用Selenium-Grid在多台机器或虚拟机上分发测试。
  • 连接到一台具有特定浏览器版本的远程机器,该版本不在当前的机器上。
  • 当仅使用HtmlUnit Driver并且不使用任何JAVA绑定时(即Python、C#、JAVA或Ruby)。

除了Firefox之外,所有其他浏览器都有单独的WebDriver可执行文件,该文件代表WebDriver API与浏览器通信。

有关更多详细信息,请参考。

使用代码

为了演示Selenium-WebDriver的功能,编写了一个简单的控制台应用程序,它接受两个命令行参数。第一个参数是希望在哪个浏览器上测试网页,第二个参数是在Google搜索页面上要搜索的关键词。应用程序将打开选定的浏览器,导航到Google搜索页面,并输入给定的搜索关键词,然后点击搜索按钮。

默认情况下,Firefox浏览器支持WebDriver,对于Chrome和Internet Explorer 32位和64位,提供了作为EXE文件的WebDriver,这些文件与上面的源代码一起提供,以便于轻松设置。要获取最新版本,可能需要访问。在任何给定时间,只能使用Internet Explorer 32位或64位作为驱动程序名称是相同的。

要设置驱动程序,请在驱动器上创建一个文件夹,例如C:\WebDriver,将相应的驱动程序EXE复制到此文件夹中。现在将此文件夹路径添加到机器的PATH环境变量中。这是必需的,因为WebDriver API将搜索相应的EXE以打开Web浏览器。

现在有两种选择来运行应用程序:一种是从Visual Studio运行,转到Project>Properties>Debug选项卡,如下面所示提供命令行参数;或者可以转到命令提示符,导航到调试文件夹并提供参数。下面的屏幕截图显示了在Firefox浏览器上搜索Selenium关键词的命令行参数。

应用程序的工作原理

首先,应用程序解析命令行参数,并识别要使用的浏览器和搜索关键词。然后,它通过调用相应WebDriver的API构造函数来创建相应Web浏览器的实例,如下所示。

C# IWebDriver browser = null; string uCaseBrowser = browserType.ToUpperInvariant(); try { switch (uCaseBrowser) { case "MOZILLA": browser = new FirefoxDriver(); break; case "CHROME": browser = new ChromeDriver(); break; case "IE": InternetExplorerOptions opt = new InternetExplorerOptions(); opt.IntroduceInstabilityByIgnoringProtectedModeSettings = true; browser = new InternetExplorerDriver(opt); break; } }

现在应用程序将使用WebDriver的实例导航到Google搜索网站。

C# string link = @"http://www.google.com"; browser.Navigate().GoToUrl(link);

一旦页面加载,应用程序将尝试从DOM中按名称“q”搜索输入文本框。Selenium提供了多种选项来搜索DOM中所需的对象。

C# IWebElement query = browser.FindElement(By.Name("q")); query.SendKeys(searchKeyword);

然后它点击相应的搜索表单的提交按钮。WebDriver足够智能,可以自动搜索相应的表单提交按钮。

C# query.Submit();

Selenium是一个免费的工具,文档也足够详细,但仍然会发现自动化某些事情是容易的,有些是困难的。如果遇到难题,那么可能需要大量搜索并提出问题,然后耐心等待答案。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485