在进行ASP.NET应用程序的代码重构时,需要在Mozilla、Chrome和Internet Explorer(IE)三种不同的浏览器中反复测试一些网页。这项测试工作变得非常繁琐,作为一名懒惰的程序员,一直在寻找一种简单且免费的方法来自动化网页测试。在网上搜索时,幸运地发现了Selenium。在本文中,将简要介绍Selenium WebDriver,它是Selenium的一个子集。Selenium提供了一个全面的解决方案,用于为Web应用程序进行持续集成测试,并有效地管理测试用例。
Selenium是一个工具套件,用于通过允许浏览器被许多编程语言和测试框架控制来自动化Web浏览器。它支持许多浏览器和平台。Selenium的主要目的是自动化Web应用程序的测试,也可用于自动化重复的基于Web的管理任务。下图显示了Selenium组件。
Selenium IDE是一个Firefox插件,用于记录用户与Firefox的交互,并可以回放,允许创建简单的脚本或协助探索性测试。
Selenium Server接收测试程序的Selenese命令,执行它们,并报告运行这些测试的结果。当测试程序打开浏览器时,Selenium Core会自动注入其中,允许Selenium服务器控制它。Selenium Core是一个JavaScript程序,使用浏览器的JavaScript执行引擎执行Selenese命令。Selenium服务器使用HTTP进行通信,因此任何支持HTTP的编程语言都可以使用Selenium服务器来执行测试脚本。
Selenium Server以前被称为Selenium RC(Remote Control)。
WebDriver在Selenium 2.0版本中引入,它提供了一个更简单的编程接口,具有设计良好的面向对象API。它直接调用浏览器,使用浏览器的原生自动化支持,支持的功能取决于使用的浏览器。如果浏览器和测试都在同一台机器上运行,并且测试只使用WebDriver API,那么不需要运行Selenium-Server。
Selenium-Server与Selenium-WebDriver在以下场景中一起使用:
除了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是一个免费的工具,文档也足够详细,但仍然会发现自动化某些事情是容易的,有些是困难的。如果遇到难题,那么可能需要大量搜索并提出问题,然后耐心等待答案。