.NET自动化测试工具:Selenium Grid

  在生产环境,QA会同时跑几十个上百个的test case。如果用单机串行的话,是一件非常耗时的事情,估计比手点快不了多少。使用并行方案的话,有两种方法,一个是自己写并行框架,一个是用现成的Selenium Grid。

自己写并行框架,好处是一切尽在掌控,有问题可以快速定位,针对业务的定制化程度高,用户用起来方便。目前想到的问题是,如果在单机多账户登录同一系统的情况下,会不会串cookie?不过我发现,可能是浏览器厂商把不同的Driver实例给隔离了,这样就省很多事。实现思路大体是:各Client(测试脚本的解析器)向MQ队列发送TestCase消息,多个执行器监听同一队列消费消息,执行测试用例,再返回结果。

由于自己偷懒,这里先用现成的Selenium Grid来做并行。SeleniumGrid是一个集群,有一个中心节点,称为hub;多个执行节点,称为node。其中,Hub的职责是管理各Node节点(如节点信息、是否Alive)、与Client建立连接、向各Node发送执行命令。 Client与Hub的分界点在Driver这儿。即Selenium脚本还是在Client上跑,但是控制的Driver是在Grid里面。(这其实跟自己写并行框架的边界划分已经不同了)。下面就入个门,介绍一下安装、运行、Helloworld(哦,应该是Hello baidu...)

1. 下载:

  1.Selenium Standalone Server: http://www.seleniumhq.org/download/

  

  2.各种Driver。在www.seleniumhq.org/download也能找到入口。

  

  ChromeDriver可以直接访问:https://sites.google.com/a/chromium.org/chromedriver/

2. 安装:

  1. 找两台机器,虚拟机也可以。我这里用的是A:10.189.1.206,B:10.189.1.201。A作为Hub,B作为Node

  2. 安装Hub:把下载的selenium-server-standalone-3.5.2.jar 放在在A机器上,运行命令:

java -jar selenium-server-standalone-3.5.2.jar -role hub

  

  3. 安装Node:同样,把下载的selenium-server-standalone-3.5.2.jar 放在在B机器上,运行命令:

  java -jar selenium-server-standalone-3.5.2.jar -role node -port 6666 -hub http://10.189.1.206:4444/grid/register

  这里必须要指定Hub的地址,端口号(port)可以设定,也可以不管。执行完后,Hub的界面如下,表示Hub已经接受了Node的注册:

  

  可以访问整个Grid的控制台:http://10.189.1.206:4444/grid/console/

  

  4. 在Hub和Node上安装ChromeDriver:

    把下载的chromedriver.exe复制到A机器上,比如放在C:\SeleniumPlugins目录下。在环境变量的Path中,添加该目录地址:C:\SeleniumPlugins。

    在B机器上,执行同样的操作。

    

3. C#代码:

  1. 创建控制台项目,添加Selenium引用。

  

  2. 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Chrome;

namespace RunTestOnRemoteGrid
{
    class Program
    {
        static void Main(string[] args)
        {

            IWebDriver driver=new ChromeDriver();
            try
            {
                driver = new RemoteWebDriver(new Uri("http://10.189.1.206:4444/wd/hub"), new ChromeOptions());
                driver.Navigate().GoToUrl("http://www.baidu.com");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                driver.Quit();
            }
        }
    }
}

  3. 运行:就可以看到Client端在执行,没啥动作,而B机器上,打开了Chrome浏览器,访问Baidu

时间: 2024-08-06 16:01:18

.NET自动化测试工具:Selenium Grid的相关文章

Web自动化测试工具——Selenium

在最近的Web课程设计上我接触到了Selenium这款Web自动化测试工具,它可以通过一系列find_element()方法定位到目标元素,对其发送模拟按键操作,使操作自动化. 首先,使用pip安装Selenium的Python模块. 下面是我写的例程.find_element_by_name方法就是通过name属性来定位元素,然后通过send_keys()发送模拟按键.基于这样的操作基本可以完成各种web下的模拟操作. import time from selenium import webd

自动化测试工具——selenium

官方网站:http://www.openqa.org/selenium/ 1.常用的几种Selenium Selenium IDE是一个带有执行界面的,用于录制或编写脚本的初级工具.它是一个firefox插件,因此只能够在Firefox上使用. Selenium1(Selenium-RC)能支持几乎所有浏览器的测试,但受到JavaScript安全模型导致的限制,其编程方式更像是面向过程的而非面向对象的. Selenium2(即WebDriver)是一种用于Web应用程序的自动化测试工具,不依赖于

自动化测试工具Selenium和QTP的比较

一.用户仿真:Selenium在浏览器后台执行,它通过修改HTML的DOM(文档对象模型)来执行操作,实际上是通过javascript来控制的.执行时窗口可以最小化,可以在同一机器执行多个测试.QTP完全模拟终端用户,独占屏幕,只能开启一个独占的实例.TestComplete和qtp类似. 二.UI组件支持:selenium 支持主要的组件,但是某些事件.方法和对象属性支持不够,QTP提供了良好的支持,通过收费的插件,提供了对dotNet组件的支持. 三.UI对象的管理和存储:QTP的内置了良好

功能自动化测试工具 Selenium 各个浏览器以及Android设备驱动方法

SeleniumTest https://github.com/WeikiForNtt/SeleniumTest.git 这几天在做Selenium的测试,各个浏览器都做了下调查,共享一下所得 (1),Selenium具体是个什么东西,自己去百度,官网http://docs.seleniumhq.org/,如果打不开,要开VPN访问. (2),Selenium对Web浏览器驱动 (2-1),根目录下有个Selenium总结.xlsx文件,供参照,有一些配置时候的注意点 (2-2),drivers

自动化测试工具selenium webdirver

新建新文件夹 在命令行执行npm init  ,一路回车,把项目先初始化 安装  npm install selenium-webdriver 此时 依照例子 新建index.js 下载浏览器驱动,到时执行时能调用浏览器 解压之后,直接放在项目中, 此时运行,node index.js 你就会看到,项目会自动调用火狐浏览器,输入webdriver 且,跳转到title为webdriver_百度搜索的页面 原文地址:https://www.cnblogs.com/xumqfaith/p/81172

Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试

最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做一个总结吧,希望能给大家带来启发和帮助.由于业界没有成熟的解决方案可供参考,本人在研究过程中也是摸着石头过河,纰漏之处在所难免,如果大家有更好的方案,敬请不吝赐教. 分布式并行执行用例需求背景 公司的产品属于web app,采用的是Robot Framework + Selenium2Library

Selenium(ThoughtWorks公司开发的web自动化测试工具)

Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7.8.9).Mozilla Firefox.Mozilla Suite等.这个工具的主要功能包括:测试与浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上.测试系统功能--创建衰退测试检验软件功能和用户需求.支持自动录制动作和自动生成 .Net.Java.Perl等不同语言的测试脚本.Selenium 是ThoughtWor

selenium自动化测试工具模拟登陆爬取当当网top500畅销书单

selenium自动化测试工具可谓是爬虫的利器,基本动态加载的网页都能抓取,当然随着大型网站的更新,也出现针对selenium的反爬,有些网站可以识别你是否用的是selenium访问,然后对你加以限制. 当当网目前还没有对这方面加以限制,所以今天就用这个练习熟悉一下selenium操作,我们可以试一下爬取一下当当网top500的畅销书单的相关信息,页面如下: 虽然这个页面不用登录就可以进来,但是我们可以随便试一下模拟登陆,直接在这个页面上面点击登录进入登录界面,然后会弹出一下窗口, 这是百分百会

Selenium Grid分布式测试入门详解

本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chrome版本为62,Firefox版本为56,IE版本为11. 1. Selenium Grid简介 Selenium Grid允许你在多台机器的多个浏览器上并行的进行测试,即分布式测试. 通常,以下两种情况会需要使用Selenium Grid: 1) 通常多个浏览器的兼容性测试,即在不同浏览器或不同