使用Watir进行跨浏览器自动化测试

我们来看看开发人员如何使用Watir和Ruby在本地执行跨浏览器自动化测试

什么是跨浏览器并行测试自动化?
执行跨浏览器并行测试以同时跨多个浏览器组合运行单个测试。这是一个非常实用且功能强大的自动化测试方案。跨浏览器并行测试自动化允许您缩短执行时间,同时不会影响检查的覆盖范围,从而加快测试结果的速度。

什么是Watir?
Watir是一个开源Ruby库,有助于实现跨浏览器自动化测试。Watir支持Ruby,它是一种面向对象的语言,通常比其他语言更简单,更快捷。Watir的好处在于它支持任何Web应用程序,而不管用于开发该应用程序的技术如何。

1. 为何选择Watir?
2.它是属于Ruby系列的免费开源工具。
3.它支持无头浏览器执行。
4.它支持页面对象设计模式。
5.它支持Cucumber集成。
6.可以保持测试的简单性和灵活性。
7.无论您使用何种技术开发应用程序,它都支持您的Web应用程序。
8.它支持不同平台上的多个浏览器。
9.它重量轻,易于使用。
10.它支持通过基于云的跨浏览器自动化测试工具在云中执行。

在本文中,我们将了解如何使用RubyMine IDE为Watir设置测试自动化环境,然后继续使用示例脚本。我还想展示如何运行脚本查看RubyMine中的失败。让我们一起开始。

使用Watir进行跨浏览器自动化测试入门
以下是在Windows上使用Watir执行跨浏览器自动化测试所需的先决条件:

1.RubyInstaller
2.Watir
3.RubyMine IDE

RubyInstaller是必须的,因为Watir支持Ruby代码,所以在我们继续自动化之前,这个安装非常重要。

设置自动化环境
本节详细介绍了如何使用Watir通过Windows设置自动化环境以执行跨浏览器自动化测试。

第1步:安装Ruby

在此处导航到官方的RubyInstaller页面

点击DEVKIT的最新版本并下载它。选择您的操作系统体系结构类型,例如我选择了一个(X64)64位操作系统。




下载后,右键单击安装程序并在Windows机器中以管理员身份运行。



弹出设置窗口以接受许可协议,您需要接受此操作并继续下一步。




我建议选中所有复选框,然后单击安装按钮继续。



下面的进度条表示安装正在进行中,安装Ruby需要几分钟的时间。



安装完成后,将弹出以下窗口以安装更新的组件。这是可选的; 你可以通过关闭窗口或点击“Enter”按钮来更新所有组件。


打开命令提示符并输入以下命令:

  • ruby -version

已安装的Ruby版本显示在命令提示符中:


要再次验证安装是否成功并且Ruby工作正常,请输入以下命令:

  • irb


irb代表Interactive Ruby Shell,它是一个REPL(read-eval-print-loop),用于在面向对象的脚本语言Ruby中进行编程。

我将编写一些简单的代码,放入“lambdatest.com”并打印出来。



第2步:安装Watir
Watir的安装非常简单。正如我在上一节中提到的,要验证Watir,您必须先安装Ruby。要安装,请输入以下gem命令:

  • gem install water


Gems是Ruby编程的包管理器,它提供了令人不安的Ruby库的标准格式。


第3步:安装RubyMine IDE
RubyMine是一个IDE(集成开发环境),可帮助您编写,调试和测试应用程序的代码。Ruby还支持Windows,MacOS和Linux等多种操作系统。

注意:RubyMine提供免费的30天试用许可证。

要下载RubyMine, 请在此处导航,并单击以下按钮:

右键单击安装程序并以管理员身份运行它。

单击“下一步”继续,直到安装完成并启动RubyMine



保持现有插件的默认值,然后单击“下一步”,直到看到下面的窗口。

单击“创建新项目”。


输入项目名称并选择“Ruby SDK”,如果您安装了RubyInstaller,它将可用。


右键单击创建的项目,然后创建一个名为“testsuites”的新目录。


在testsuites下创建一个名为“resources”的子目录,并将其放在“chromedriver.exe”文件中。

要运行基于浏览器的自动化,ChromeDriver是必需的,这是WebDriver用来控制Chrome的单独可执行文件。
要下载ChromeDriver,请访问此处



编写样本测试代码

在RubyMine中编写代码非常简单。

右键单击testsuites并选择“TestUnit Test Template”。



在文件名中输入文件名“my_script.rb”,然后单击“确定”。


在RubyMine窗口中,编写以下代码。

代码(评论中给出的解释):

require 'watir'
require 'selenium-webdriver'
require 'test/unit'
require 'test/unit/ui/console/testrunner'
class Sampletest < Test::Unit::TestCase
"" "
  LambdaTest Watir automation sample example
  Configuration
  ----------
  Download Chrome driver from http://chromedriver.chromium.org/downloads and drop into your resource folder
  Result
  -------
  Execute Watir Automation Tests on LambdaTest website
  "
""
def setup
 
"" "
      Setup local driver
      Params
      ----------
      platform : Windows 10
      browserName : Supported platform - (chrome in your local box)
      Result
      -------
      "
""
 
#Initializing chrome driver
  Selenium::WebDriver::Chrome.driver_path =
"resources/chromedriver.exe"
  @browser = Watir::Browser.new
end
def test_verifyLambdapage()
   
#Navigate to lambdatest.com website
    @browser.goto
'https://lambdatest.com'
   
#Maximize the browser window
    @browser.window.maximize
   
#Initializing element with Link text
    ele_starttestingbutton = @browser.link(
:text => "START TESTING")
   
#Perform click operation
    ele_starttestingbutton.click
   
#printing page title
    puts(
"Actual Page title is: "+@browser.title)
   
#Verifying actual and expected title of the page. This examples I intentionally fail the test by adding spell error
    assert_equal(
"Signup - LambdaTest App | Free Cross Browser Testing To0ol", @browser.title)
end
def teardown
 
#Quit the browser
  @browser.quit
end
end


右键单击脚本并在IDE中选择“运行”以查看测试结果和输出:



上述测试脚本故意无法比较实际页面标题与预期页面标题方面的验证结果。

下面的快照解释了测试失败的原因,并突出显示了差异。


使用本地WebDriver使用Watir执行跨浏览器自动化测试

代码说明:

def setup
"" "
    Setup local driver
    Params
    ----------
    platform : Windows 10
    browserName : Supported platform - (chrome in your local box)
    Result
    -------
    "
""
#Initializing chrome driver
Selenium::WebDriver::Chrome.driver_path =
"resources/chromedriver.exe"
@browser = Watir::Browser.new
end

def teardown
#Quit the browser
@browser.quit
end


在TestUnit模板中,IDE自动创建  def setup 和  teardown。这些方法实际上在测试之前和之后运行。

设置:此方法是运行测试的前提条件。您可以设置初始化浏览器或任何测试数据设置。

拆解:在测试运行后使用此方法。您可以关闭/退出浏览器或删除数据库中的数据。

Selenium::WebDriver::Chrome.driver_path = "resources/chromedriver.exe"
  @browser = Watir::Browser.new

上面的代码正在初始化ChromeDriver,创建一个新实例并为变量浏览器分配一个对象引用。

下一行代码是典型的Watir脚本(注意:方法名称以“test_”开头,单元测试运行器必须实际意识到这是测试方法)。
1.导航到浏览器。
2.最大化窗口。
3.点击lambdatest.com中的“开始测试”按钮。
4.打印当前页面标题。
5.最后,验证您是否获得预期与实际的标题。

def test_verifyLambdapage()
 
#Navigate to lambdatest.com website
  @browser.goto
'https://lambdatest.com'
 
#Maximize the browser window
  @browser.window.maximize
 
#Initializing element with Link text
  ele_starttestingbutton = @browser.link(
:text => "START TESTING")
 
#Perform click operation
  ele_starttestingbutton.click
 
#printing page title
  puts(
"Actual Page title is: "+@browser.title)
 
#Verifying actual and expected title of the page. This examples I intentionally fail the test by adding spell error
  assert_equal(
"Signup - LambdaTest App | Free Cross Browser Testing To0ol", @browser.title)
end

阅读 34