总而言之,就是先连接服务器端计算机(有selenium-server-standalone.jar文件的计算机,将被客户端计算机操纵)和客户端计算机,再运行客户端计算机的测试代码,操作服务器端计算机完成测试动作。
连接依据:IP地址/主机名、端口号、浏览器信息(浏览器名称、版本号、操作系统)
说明:< >, 该符号内的内容是文字描述,不作为输入文本
步骤:
1.在远程计算机上,下载selenium-server-standalone.jar文件,https://selenium.dev/downloads/,需要下载最新版,老的版本可能会与新的浏览器版本不兼容,导致测试时找不到浏览器。
2.在远程计算机上,启动命令行,cd到jar文件所在文件夹, 输入命令:java -jar selenium-sever-standalone-3.141.59.jar
需要先安装JAVA,我安装的最新的,不清楚旧版本JAVA能否奏效。这条命令将启动远程测试服务器端,并且实时反馈测试过程具体情况。
Selenium默认支持火狐浏览器,对于IE和Chrome,需要添加默认的驱动搜索路径,例如:在上条命令中添加
-Dwebdriver.chrome.driver=<chromedriver.exe路径字符串>,对于IE浏览器,只需把等号左边chrome改成ie即可。
(不同浏览器、不同的浏览器版本,都需要下载不同的驱动),可以使用多条-Dwebdriver命令来添加多个驱动的默认搜索路径;
默认使用4444作为端口号,也可以用-port命令自定义。
3.在客户端计算机上,编写相关测试代码,不同的是使用driver = webdriver.Remote('http://<服务器端计算机IP>:<启动服务器端时用的端口号>/wd/hub', desired_caps), 来替代driver = webdriver.Chrome( ), desired_caps是一个字典,用来配置浏览器信息,如desired_caps['platform'] = ‘WINDOWS’, desired_caps['browserName'] = ‘chrome'等。
4.运行代码,测试过程将在服务器端进行,测试结果作为代码运行结果返回。
5.分布式远程测试
与普通的远程测试区别在于:
1)服务器端启动时添加-role hub命令:使用 java -jar selenium-sever-standalone-3.141.59.jar -role hub
2)可在服务器端计算机上输入http://localhost:<启动时设置的端口号,不设置时默认为4444>/grid/console,查看控制台信息,控制台将显示节点的配置信息
3)在服务器端,启动新的命令行,添加IE/firefox/chrome等浏览器节点,
①方法一:新建命令行,cd到jar文件下,对于chrome, 键入命令: java -Dwebdriver.chrome.driver=<chromedriver.exe路径字符串> -jar selenium-server-standalone-3.141.59.jar -role webdriver -browser "browserName=chrome, version=78, maxinstance=2, platform=WINDOWS" -hubHost localhost -port 7777
②方法二:使用json格式的配置文件
注意,在客户端使用这里的端口号7777,而不是启动服务器端设置的4444,否则将找不到浏览器。
6.在云端测试
用云端代替这里的服务器端计算机,即可实现在尽可能多的操作系统和浏览器上进行测试。
这里使用https://saucelabs.com/,注册账号,复制Access Key。
修改代码:desired_caps['browserName'] ='phantomjs', driver = webdriver.Remote('http://' + str(<用户名>) + ':' + str(<Access Key>) + '@ondemand.saucelabs.com:80/wd/hub', desired_caps),其他不变。
运行测试代码后, 在saucelabs网站中,选择Dashboard - AUTOMATED TESTS可查看测试过程视频及相关细节