pyhton+Selenium Girl2
来源:互联网 发布:结对编程 编辑:程序博客网 时间:2024/06/18 11:11
Selenium Girl的作用
- 利用selenium girl可以在不同的主机上建立主节点(hub)和分支节点(node),可以使主节点上的测试用例在不同的分支节点上运行;
- 对于不同的节点来说,可以搭建不同的测试环境(操作系统、浏览器),使得一份测试用例有不同环境下的测试结果;
- Selenium Girl提供多系统、多浏览器的执行环境,可以分布式执行测试用例,(分布式负责将测试用例远程调到不同的环境下执行)
Selenium Server环境配置
Selenium girl2 已经集成到Selenium Server中,所以要下载和运行Selenium Server才可以使用Girl2的功能。
下载Selenium Server
下载地址:http://www.seleniumhq.org/download/
在该页面找到Selenium Standalone Server,单击版本好下载最新版或者点击先前的版本下载指定版本。
下载完成后的到Selenium-server-standalone-xxx.jar包。
配置Java环境
Java环境的介绍:
Java环境分为JDK和JRE两种。jdk是面向开发人员使用的sdk,它提供了Java的开发环境和运行环境;jre是指Java的运行环境,面向的是Java程序的使用者,也就是用户。
Java下载地址:
https://www.java.com/zh_CN/download/manual.jsp
下载后得到:jdk-8u111-windows-x64.exe,双击安装。安装好后配置环境变量,在dos中验证安装是否成功。
cmd.exejava......javac.........................java命令用于运行class文件字节码,javac命令可以经Java源文件编译为class字节码文件。
运行Selenium Server
切换到Selenium Server所在的目录,输入命令:
>java -jar selenium-server-standalone-2.48.0.jar
那么运行成功。
Selenium Girl工作原理
- Girl是用于设计帮助我们进行分布式测试的工具,其整个结构由一个hub主节点和若干个node代理节点组成;
- hub用来管理各个代理节点的注册和状态信息,并且接收远程客户端代码的请求调用,然后吧请求的命令在转发给代理节点来执行;
- 使用girl远程执行测试的代码与直接调用Selenium server 是一样的,,只是环境启动方式不同,需要同时启动一个hub和至少一个node;
启动一个hub、一个node实例:
cmd.exe>java -jar selenium-server-standalone-2.48.jar -role hub #主节点cmd.exe>java -jar selenium-server-standalone-2.48.jar -role node #代理节点hub默认端口是4444,node默认端口是5555。
同一台主机上启动多个node实例:
cmd.exe>java -jar selenium-server-standalone-2.48.jar -role hub #主节点cmd.exe>java -jar selenium-server-standalone-2.48.jar -role node -port 5555 #代理节点cmd.exe>java -jar selenium-server-standalone-2.48.jar -role node -port 5556cmd.exe>java -jar selenium-server-standalone-2.48.jar -role node -port 5557同一台主机启动多个node需要指定端口!!
通过浏览器访问Girl的控制台:http://127.0.0.1:4444/girl/console,
通过控制台查看启动的节点信息,如图:
当测试用例需要验证的环境比较多时,可以并行地执行这些用例从而缩短测试总耗时。Girl可以根据用例中指定的平台配置信息把用例转发给符合匹配要求的测试代理。
Remote应用
可以把remote看作一种驱动类型,但它不是支持某一款特定的浏览器或平台,而是一种配置模式,我们可以在这种配置模式下指定任意的平台或浏览器,这种模式的执行都需要Selenium server的支持。
Remote实例(一个测试平台、一个浏览器)
通过remote来运行测试用例:
先启动Selenium server:
> java -jar selenium-server-standalone-2.48.2.jar
把启动命令生成批处理文件,不用每次都要输入一大串命令,直接双击就可以启动了:
Selenium Server存放在C盘中,再创建一个批处理文件startup.bat,在里面输入:
java -jar C:\\selenium\selenium-server-standalone-2.48.2.jar -role hub
编写自动化测试脚本:
from selenium.webdriver import Remotefrom Email126Login import Login #import登录模块from time import *driver = Remote(command_executor='http://127.0.0.1:4444/wd/hub', #指向本机的4444端口 desired_capabilities={'platform':'ANY', #测试平台,ANY指默认平台 'browserName':'firefox', #浏览器 'version':'', #浏览器版本 'javascriptEnabled':True #JavaScript启动状态 })driver.get('http://www.126.com')driver.maximize_window()driver.implicitly_wait(10)username = "tesxxxt1"password = "yXXX."l = Login() #实例化登录类l.login_on(driver,username,password)sleep(10)l.login_off(driver)
参数化测试平台及浏览器(多个测试平台、多个浏览器)
同一主机上运行测试用例
在同一个主机上运行测试用例,host :127.0.0.1,不同的浏览器:(同一主机不同浏览器运行脚本)启动Selenium Girl,一个主节点、两个代理节点:
>java -jar selenium-server-standalone-2.48.2.jar -role hub >java -jar selenium-server-standalone-2.48.2.jar -role node -port 5555>java -jar selenium-server-standalone-2.48.2.jar -role node -port 5556实例代码:
from selenium.webdriver import Remote#定义主机和浏览器lists ={'http://127.0.0.1:4444/wd/hub':'firefox', #同一主机127.0.0.1,不同浏览器 'http://127.0.0.1:5555/wd/hub':'chrome', 'http://127.0.0.1:5556/wd/hub':'internet explorer'}#通过不同的浏览器执行脚本for host,browser in lists.items(): #遍历字典,获取每一个主机及浏览器 print(host,browser) driver = Remote(command_executor=host, desired_capabilities={ 'platform':'ANY', 'browseName':browser, 'version':'', 'javascriptEnabled':True } ) driver.get(r"http://www.baidu.com") driver.find_element_by_link_text("新闻").click() driver.back() url = driver.current_url print(url) driver.quit()
不同主机和不同的浏览器运行脚本:
启动Selenium server:
1.在本机启动一个主hub和一个node节点:本机IP地址(192.168.0.101),节点端口4444/5555
java -jar selenium-server-standalone-2.48.0.jar -role hub
java -jar selenium-server-standalone-2.48.0.jar -role node -port 5555
2.启动一个远程node:centos7,ip地址:192.168.0.102 在虚拟机里面:端口是6666
java -jar selenium-server-standalone-2.48.0.jar -role node -port 6666 -hub http://192.168.0.101:4444/gird/register
3.修改远程主机的IP地址及端口号,在其上面的Firefox浏览器下运行脚本
测试脚本:(结合多线程运行脚本)
'''在不同主机、不同浏览器同时执行测试用例,多线程;利用Selenium Girl提供分布式执行测试用例;先启动Selenium server,这里分别在本地主机启动一个hub和一个node,在其他主机(虚拟机)启动一个node。'''from selenium.webdriver import Remoteimport threadingfrom time import *#测试用例def test_baidu(host,browser): print("开始:%s"%ctime()) print(host,browser) dc ={'browserName':browser} driver = Remote( command_executor=host, desired_capabilities=dc ) driver.get(r'http://www.baidu.com') driver.implicitly_wait(10) driver.find_element_by_link_text("新闻").click() sleep(2) driver.get_screenshot_as_file(r'D:\testscreen\baidu.jpg') driver.quit()if __name__ =='__main__': #启动参数,指定运行主机和浏览器 lists={'http://127.0.0.1:4444/wd/hub':'chrome', 'http://127.0.0.1:5555/wd/hub':'internet explorer', 'http://192.168.216.128:6666/wd/hub':'firefox' #远程节点node } threads =[] files = range(len(lists)) #创建线程,并append进线程组 for host,browser in lists.items(): t = threading.Thread(target=test_baidu,args=(host,browser)) threads.append(t) #启动每一个线程 for i in files: threads[i].start() #守护每一个线程 for i in files: threads[i].join()
0 0
- pyhton+Selenium Girl2
- 还是pyhton
- pyhton 简繁
- Pyhton 数组
- pyhton exit
- pyhton virtualenv
- Pyhton __slots__
- Pyhton:collections
- Pyhton:异常
- pyhton基础
- pyhton第一次
- Selenium
- Selenium
- Selenium
- selenium
- Selenium
- Selenium
- selenium
- cocos2d-x 编译时出错
- 通信图
- 从《NOI2014 魔法森林》看动态树(LCT)的简单应用
- Linux命令格式
- 数据可视化matplotlib的应用(三)
- pyhton+Selenium Girl2
- Memory Management (DXE) 代码简析
- Android 虚拟机运行简单的 hello world 显示“ Unfortunately,活动名has stoped ”
- 简单翻转程序
- IOS 读取 PDF图层
- popwindow+listview
- tensorflow 使用softmax 分类mnist数据库
- 在google map上显示Instagram的照片
- 开发的一个android程序,总是显示无法运行,就退出了。但是没有报错。求大神解救啊!