CentOS 7.x环境下搭建: Headless chrome + Selenium + ChromeDriver实现自动化测试的示例分析
这期内容当中小编将会给大家带来有关CentOS 7.x环境下搭建: Headless chrome + Selenium + ChromeDriver实现自动化测试的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
笔者所在公司希望使用Selenium进行高性能的自动化测试。出于稳定性考虑,我们选择linux环境,而不是Windows环境。同时为了追求测试效率,去UI化,所以选择了Chrome的Headless方案。 1、环境说明
CentOS版本:
LSB Version: :core-4.1-amd64:core-4.1-noarch 2、最新版本Google-Chrome安装
CentOS/RedHat 7以上安装google-chrome可以完全参考https://intoli.com/blog/installing-google-chrome-on-centos/ 2.1 指定上网代理
由于服务器环境本身与外网隔绝,需要指定代理才能正常适用yum工具。我们用的代理服务器为http://10.46.89.29:1087(正常上网可以忽略此过程)。source /etc/skel/.bash_profile
1
执行curl测试:
[root@seersitapp05 ~]# curl -vo /dev/null -H 'x-header-trace:all' 'https://www.suning.com' -k * About to connect() to proxy 10.46.89.29 port 1087 (#0) * Trying 10.46.89.29... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 10.46.89.29 (10.46.89.29) port 1087 (#0) * Establish HTTP proxy tunnel to www.suning.com:443 > CONNECT www.suning.com:443 HTTP/1.1 > Host: www.suning.com:443 > User-Agent: curl/7.29.0 > Proxy-Connection: Keep-Alive > x-header-trace:all > < HTTP/1.1 200 Connection established < * Proxy replied OK to CONNECT request * Initializing NSS with certpath: sql:/etc/pki/nssdb 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* skipping SSL peer certificate verification 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0* SSL connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 * Server certificate: * subject: CN=*.suning.com,ST=江苏省,L=南京市,O=苏宁云商集团股份有限公司,C=CN * start date: 11月 21 15:21:01 2016 GMT * expire date: 11月 21 15:21:01 2019 GMT * common name: *.suning.com * issuer: CN=WoSign OV SSL CA,O=WoSign CA Limited,C=CN > GET / HTTP/1.1 > User-Agent: curl/7.29.0 > Host: www.suning.com > Accept: */* > x-header-trace:all > < HTTP/1.1 200 OK < Expires: Tue, 13 Mar 2018 11:35:57 GMT < Date: Tue, 13 Mar 2018 11:30:57 GMT < Server: styx < Content-Type: text/html; charset=UTF-8 < Transfer-Encoding: chunked < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < Last-Modified: Tue, 13 Mar 2018 11:27:06 GMT < Pragma: Pragma < Cache-Control: max-age=300 < X-Cache-Hits: 10 < Via: 1.1 Xcache_Suning_92 < X-Via: 1.1 gangdianxun22:9 (Cdn Cache Server V2.0), 1.1 luoshan90:1 (Cdn Cache Server V2.0), 1.1 lsh282:7 (Cdn Cache Server V2.0) < Connection: keep-alive < strict-transport-security: max-age=300 < 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0{ [data not shown] 100 179k 0 179k 0 0 28448 0 --:--:-- 0:00:06 --:--:-- 43278 * Connection #0 to host 10.46.89.29 left intact 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 522.2 指定yum源
服务器应该指定合适yum源,避免找不到某些依赖的尴尬。.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
1
2
注意,选择你能正常访问的repo地址。保存后执行yum clean all操作。
[root@seersitapp05 ~]# yum clean all 已加载插件:fastestmirror正在清理软件源: base updates yum-cdCleaning up everythingCleaning up list of fastest mirrors 1 2 3 4 52.3 安装google-chrome
根据https://intoli.com/blog/installing-google-chrome-on-centos/.com/install-google-chrome.sh | bash
1
脚本会自动检测当前版本安装chrome所缺失的依赖包并下载。如下图所示。
最终安装成功会显示:Successfully installed google-chrome-stable, Google Chrome 65.0.3325.146 .
检查是否还缺乏依赖:
ldd /opt/google/chrome/chrome | grep "not found" 1返回为空,说明CentOS下chrome依赖问题基本解决。
2.4 运行chrome
执行-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.suning.com/
1
然而,仍然有错误:
[0100/000000.311368:ERROR:broker_posix.cc(43)] Invalid node channel message
翻墙求助了好久,发现解决方案,仍然缺乏依赖:
yum install \ ipa-gothic-fonts \ xorg-x11-fonts-100dpi \ xorg-x11-fonts-75dpi \ xorg-x11-utils \ xorg-x11-fonts-cyrillic \ xorg-x11-fonts-Type1 \ xorg-x11-fonts-misc -y 1 2 3 4 5 6 7 8
解决之。再次运行 3、最新版本Chromedriver安装为了匹配chrome版本Google Chrome 65.0.3325.146,下载最新版本的chromedriver 2.3.6 linux64位http://npm.taobao.org/mirrors/chromedriver/2.36/chromedriver_linux64.zip# ./chromedriver Starting ChromeDriver 2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752) on port 9515 Only local connections are allowed.
1
2
3
成功!version: '3.5.3', revision: 'a88d25fe6b', time: '2017-08-29T12:42:44.417Z' System info: host: 'seersitapp05', ip: '10.47.145.25', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-514.26.2.el7.x86_64', java.version: '1.8.0_161' Driver info: driver.version: ChromeDriver at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:192) at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:178) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:78) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:646) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:255) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:237) at org.openqa.selenium.remote.RemoteWebDriver.
(RemoteWebDriver.java:138) at org.openqa.selenium.chrome.ChromeDriver. (ChromeDriver.java:178) at org.openqa.selenium.chrome.ChromeDriver. (ChromeDriver.java:146) at com.suning.seer.node.api.impl.WebAPI.openNewWindowByChrome(WebAPI.java:181) ... 18 common frames omitted Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:9567/status] to be available after 20009 ms at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:102) at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:187) ... 27 common frames omitted
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
注意,其他版本chromedriver可能会缺依赖,缺啥补啥。 4、Java环境安装
到Oracle官方下载http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html|grep java rpm -qa |grep jdk rpm -qa |grep gcj
1
2
3
如果安装可以批量卸载所有带有Java的文件:
rpm -qa | grep java | xargs rpm -e --nodeps 1在/opt目录下解压下载的jdk:
tar -xvf jdk-8u161-linux-x64.tar 1配置JDK环境,打开/etc/profile,增加JAVA环境变量:
JAVA_HOME=/opt/jdk1.8.0_161 JRE_HOME=/opt/jdk1.8.0_161/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/binexport JAVA_HOME JRE_HOME CLASS_PATH PATH设置完成后,退出vim,然后继续输入如下指令,刷新环境变量:
source /etc/profile尝试测试JAVA是否安装成功:
[root@seersitapp05 opt]# java -version java version "1.8.0_161" Java(TM) SE Runtime Environment (build 1.8.0_161-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)[root@seersitapp05 opt]# echo $JAVA_HOME /opt/jdk1.8.0_1615、Tomcat 7搭建
首先我们来配置一下tomcat的环境变量和内存设置,进入tomcat的bin目录后通过vi命令打开catalina.sh文件,并在其中加入如下配置:
JAVA_OPTS="-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m" export TOMCAT_HOME=/opt/tomcat-7.0.42 export CATALINA_HOME=/opt/tomcat-7.0.42 export JRE_HOME=/opt/jdk1.8.0_161/jre接下来是tomcat的应用端口号,进入tomcat的conf目录下的server.xml文件,默认是8080端口。7.0.42/bin/startup.sh run
1
启动控制台日志可以在中打印:
tail -f -n 1000 tomcat-7.0.42/logs/catalina.out关闭tomcat:
tomcat-7.0.42/bin/shutdown.sh另外,还碰到了CentOS关闭后tomcat进程仍然存在的情况,生产环境下,当然不能每次强杀进程吧。
最后,如果大家开启了代理模式,记得真正服务器生产运行时记得还原配置,关闭代理模式
上述就是小编为大家分享的CentOS 7.x环境下搭建: Headless chrome + Selenium + ChromeDriver实现自动化测试的示例分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。