安装浏览器驱动和测试环境参数化
一、安装浏览器驱动
Webdriver是一个远程控制界面,作为一种远程进程程序指示Web浏览器行为,所以必须安装浏览器驱动才能获得浏览器对象。
Firefox浏览器驱动默认在Webdriver库中,可以直接调用,其他浏览器驱动需要手动下载:http://www.seleniumhq.org/download/
下载浏览器驱动并解压后(例如ChromeDriver_win32.zip,解压得到chrome.driver.exe文件),将可执行文件放置到C:\Python27目录下
1 #coding=utf-8 2 from selenium import webdriver 3 from selenium.common.exceptions import WebDriverException 4 from time import sleep 5 6 driver = webdriver.Chrome() 7 driver.get('http://www.baidu.com') 8 9 try: 10 driver.find_element_by_id("kw").send_keys("phantomjs") 11 driver.find_element_by_id('su').click() 12 sleep(3) 13 driver.get_screenshot_as_file("D:\\baidu_ok.jpg") 14 except WebDriverException as mgs: 15 print mgs 16 driver.get_screenshot_as_file("D:\\baidu_error.jpg") 17 finally: 18 driver.quit()
如果程序能调动响应浏览器,则浏览器安装成功,截图如下:
二、搭建测试环境
Selenium Grid是用来在不同的主机上建立主节点(hub)和分支节点(node)进行分布式测试的工具,不同的节点搭建不同的测试环境(操作系统,浏览器),这样使得主节点上的测试用例在不同的分支节点上运行可以得到不同环境的执行结果。
1.下载、配置、运行Selenium Server
下载地址:http://www.seleniumhq.org/download/,下载完成将得到selenium-server-standalone-xxx.jar,由于jar包由java开发,所以运行还需要配置java环境。
2.配置Java环境
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,点击下载JDK,设置安装环境,然后设置环境变量:
win10系统,点击此电脑—系统属性—高级系统设置—环境变量——新建:
#新建 变量名:JAVA_HOME 变量值:C:\Program Files (x86)\Java\jdk1.8.0_91 //要根据自己的实际路径配置 变量名:CLASS_PATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; #找到path变量,编辑,追加 变量名:path 变量值:C:\Program Files (x86)\Java\jdk1.8.0_91\bin;C:\Program Files (x86)\Java\jdk1.8.0_91\jre\bin;
检查java环境是否配置成功
3.运行Selenium Server
将下载的selenium-server-standalone-2.53.0.jar包放在selenium文件夹下,执行java -jar selenium-server-standalone-2.53.0.jar命令启动Selenium Server。
三、Selenium Grid启动
Selenium Grid远程执行测试代码需要同时启动一个hub和至少一个node。hub默认端口号为4444,node默认5555。若一台主机上要启动多个node,则需要指定端口号。
#selenium-server-standalone-xxx.jar -role hub selenium-server-standalone-xxx.jar -role hub #selenium-server-standalone-xxx.jar -role node selenium-server-standalone-xxx.jar -role node -port 5555 selenium-server-standalone-xxx.jar -role node -port 5556
1 from selenium.webriver import Remote 2 3 #调用remote方法 4 driver = Remote(command_executor ='http://127.0.0.1:4444/wd/hub', 5 desired_capabilities ={'platform':'ANY', 6 'browserName':'chrome' 7 'version':'' 8 'javascriptEnabled':'True' 9 10 } 11 ) 12 13 driver.get("http://www.baidu.com") 14 driver,find_element_by_id("kw").send_keys('remote') 15 driver.find_element_by_id("su").click()
16 driver.quit()
四、参数化测试环境
Selenium Server创建本地节点和远程节点,Romote配置测试用例在这些节点上执行。
本机启动如下节点
selenium-server-standalone-2.53.0.jar -role hub selenium-server-standalone-2.53.0.jar -role node -port 5555 selenium-server-standalone-2.53.0.jar -role node -port 5556
1 from selenium.webriver import Remote 2 3 定义主机和浏览器 4 lists = {'http://127.0.0.1:4444/wd/hub':'Firefox', 5 'http://127.0.0.1:5555/wd/hub':'Chrome', 6 'http://127.0.0.1:5556/wd/hub':'Phantomjs', 7 8 } 9 10 for host,browser in lists: 11 print (host,browser) 12 driver = Remote(command_executor = host, 13 desired_capabilities ={'platform':'ANY', 14 'browserName':browser 15 'version':'' 16 'javascriptEnabled':'True' 17 18 } 19 ) 20 21 driver.get("http://www.baidu.com") 22 driver,find_element_by_id("kw").send_keys('remote') 23 driver.find_element_by_id("su").click() 24 25 driver.quit()