Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试

Windows在Linux上搭建自动化测试

自动化测试好处很多,可以提高测试执行效率,节约时间成本,解放人力去做更重要的工作,可重复利用,建设对人的依赖等等。但是不能一直占据着某台电脑来跑自动化脚本,那样太浪费资源了,所以将其部署到服务器上默默的在后台运行是一个不错的选择。

但是想要在Linux下搭建自动化测试需要怎么做呢?我是这么做的:

首先,我先捋了一下我有什么:

Windows电脑

Linux服务器

自动化测试框架:

1. Java

2. Selenium

3. Junit

4. cucumber

5. IntelliJ

其次,我的需求:

我需要在linux服务器上跑自动化测试

并且,我需要它定时的在Linux服务器上跑。

现在,看一下我具体是怎么做的吧:

连接Linux服务器

安装Java in Linux

安装Git in Linux

Linux 下建立 Git 与 GitHub 的连接并克隆到本地

远程连接 linux 服务器安装 maven

xshell 远程连接 Linux 服务器安装 Tomcat

安装Chrome in Linux

安装Chromedriver in Linux

安装Docker in Linux

安装Jenkins in Linux

配置Jenkins

配置代码让其在linux无头模式跑

具体步骤如下:

01、 连接Linux服务器

首先需要知道自己的服务器信息,以下是我自己的:

* 我电脑是Windows的

* Linux远程服务器:

* 主机: 121.1xx.xx.xx

* 端口号:20222

* 账户: yingying.shang

* 密码:xxxxxxxx

然后我们需要下载xshell,用来连接服务器

Step1. xshell 官方下载地址: 可以选择填写信息试用30天

Step2. 左上角点击文件,新建一个会话属性

Step3. 在连接页面填写信息,以下是我自己的信息可以参考下

* 名称: UItest

* 协议:SSH

* 主机:121.199.79.27

* 端口号: 20222

Step4. 点击用户身份验证,选择登录验证方式,可以选择Public Key或者Password,这里选择的Public Key

* 方法:Public Key

* 用户名:yingying.shang

Step5. 根据生成公钥

Step6. 点击下一步生成公钥对,然后再点击下一步,将生成的公钥发给运维同事,进行权限配置

Step7. 最后结果如下图

Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第1张图片

02、 安装Java in Linux

首先先看一下Linux上是否已经安装了Java,可以在xshell里面使用命令来查看:

xshell 命令:

查看Java位置:

1. whereis java

2. which java

执行以下命令,可以卸载已经有了的JDK

3. sudo yum remove jdk1.8.0_181

如果没有Java可以通过以下步骤进行安装,如果有Java但是Java版本太低可以先卸载再通过以下步骤安装:

Note: 也可以直接通过命令"yum install -y java-1.8.0-openjdk-devel.x86_64" 来安装Java,这种安装方式快,但是安装的是低版本的Java,对版本要求不高的可以使用这种方式。

Step1. 下载Java JDK

Java SE 下载地址: https://www.oracle.com/java/technologies/javase-jdk14-downloads.html

Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第2张图片

Step2. 将下载的JDK压缩包通过xshell命令上传到Linux上

在xshell上输入命令: sudo rz

然后选择JDK压缩包,并上传到Linux上

Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第3张图片

Step3. 解压JDK安装包,并安装

解压缩命令为:tar -zxvf 文件名 -C 目标目录

tar -zxvf jdk-14.0.1_linux-x64_bin.rpm -C /usr/local/

解压完成

查看解压文件

ll /usr/local/

Step4. 配置JDK的环境变量

打开/etc/profile: sudo vim /etc/profile

按下i键出现——插入——即可进行编辑,在该文件最后增加环境变量配置

export JAVA_HOME=/usr/local/java

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$PATH

注:JAVA_HOME“=”后面为JDK的安装路径


编辑完成后,按下esc键,现在——插入——字样消失

输入:wq保存退出

确认后回到命令行

使配置生效: source /etc/profile

JDK的验证: java -version

Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第4张图片

03、 安装Git in Linux

源码编译安装git (yum install git 版本太低,会造成Jenkins无法与git repo相连)

Step1. 获取github最新的Git安装包下载链接,进入Linux服务器,执行下载https://github.com/git/git/releases 命令为: wget https://github.com/git/git/archive/v2.26.2.tar.gz

Step2. 压缩包解压,命令为: tar -zxvf v2.26.2.tar.gz

Step3. 安装编译源码所需依赖,命令为: yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker 耐心等待安装,出现提示输入y即可

Step4. 安装依赖时,yum自动安装了Git,需要卸载旧版本Git,命令为: yum remove git 出现提示输入y即可

Step5. 进入解压后的文件夹,命令 cd git-2.26.2

Step6. 然后执行编译,命令为 make prefix=/usr/local/git all 耐心等待编译即可

Step7. 查看git目录:whereis git

04、 Linux 下建立 Git 与 GitHub 的连接并克隆到本地

Step1. 查看 Git 版本信息: git version

Step2. 配置 Git 用户信息:

git config --global user.name “woider”

git config --global user.email “[email protected]

Step3. 开启 SSH 服务: ps -e | grep sshd

Step4. 生成 SSH KEY: ssh-keygen -t rsa -C “[email protected]

生成 ssh key 过程中,会让你填写 passphrase,连按三次回车跳过即可, id_rsa 为私钥,id_rsa.pub 为公钥

The key fingerprint is:

SHA256:pdrXd6xxxxxxRb9I3Og20TpUqrlx55iZ9HnW9W5lztsaU [email protected]

Step5. 查看 SSH KEY (id_rsa 为私钥,id_rsa.pub 为公钥)

Step6. ssh-rsa AAAAB3Nz…(很长)…9gGmx [email protected]

进入目录:cd /root/.ssh

查看文件:ls -a

打开 id_rsa.pub 文件,将内容复制到剪贴板: vim id_rsa.pub

[email protected]:xx_xxx_xxx/qa-web-functional-test.git (修改成自己的repo)

Step7. 添加 SSH KEY

登录 GitHub,打开 Personal settings 页面,选择 SSH and GPG keys 选项

点击New SSH key

添加Title

添加刚刚复制的Key

点击Add SSH key

Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第5张图片

Step8: 如果没有自己的仓库就创建一个,下面是通过 SSH 地址将 GitHub 仓库克隆到本地: git clone [email protected]:xxx/xxx.git

第一次连接时,需要你确认 GitHub 的 Key 的指纹信息是否真的来自 GitHub 的服务器。

克隆到本地的仓库会自动关联远程仓库,可以通过 git remote -v 命令查看关联状态

Step9: 关联后可以通过 git push origin master 命令推送修改

注意:如果克隆的是其他人的仓库,由于没有权限,你将不能推送修改

05、 远程连接 linux 服务器安装 maven

1. 下载Maven: http://archive.apache.org/dist/maven/maven-3/

2. 把下载的maven包上传到linux:sudo rz

3. 将上传好的maven解压到/dev目录下,输入命令: tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /dev/

4. 打开环境变量配置文档: vim /etc/profile

5. 在环境变量配置文档最末尾处,添加以下内容:

- export PATH=$PATH:$MAVEN_HOME/bin

- export MAVEN_HOME=/dev/apache-maven-3.6.3

6. Maven 配置成功:mvn -version


06、 xshell 远程连接 Linux 服务器安装 Tomcat

1. 下载并上传tomcat 到linux: sudo rz

2. xshell解压Tomcat压缩包: sudo tar -vxf apache-tomcat-7.0.94.tar.gz -C/usr/local

3. 进入tomcat安装bin目录并启动Tomcat:

1. cd /usr/local/apache-tomcat-7.0.94/bin

2. ./startup.sh


07、 安装Chrome in Linux

Step1: 命令在Linux安装chrome浏览器: yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

Step2: 使用命令查看版本: google-chrome --version

Step3: 我的版本是:(Google Chrome 83.0.4103.61)

08、 安装Chrome webdriver in Linux

Step1: 下载Linux版本的chromewebdriver

http://chromedriver.storage.googleapis.com/index.html?path=83.0.4103.39/

Step2: 将下载的压缩包上传到Linux

  在xshell上输入命令: **sudo rz**

  然后选择chromewebdriver压缩包,并上传到Linux上

Step3: 解压chromewebdriver安装包: unzip chromedriver_linux64.zip

Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第6张图片

Step4: 将chrome driver移动到/usr/bin目录

chmod用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限, +x未添加可执行权限: chmod +x chromedriver

强制将chromedriver移动到指定目录:sudo mv -f chromedriver /usr/local/share/chromedriver

(sudo ln -s 源文件 目标文件)为chromedriver在另外一个位置建立一个同步的链接,类似Windows下的超级链接: sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver

为chromedriver在另外一个位置建立一个同步的链接,类似Windows下的超级链接:sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

如果已经挪过文件,再次挪到相同位置会报下面的错。

Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第7张图片

Step5: 查看/usr/bin目录下是否有chromedriver文件(whereis中间没有空格):whereis chromedriver

Step6: 查看chromedriver版本:chromedriver -version

09、 安装Docker in Linux

Step1: 安装docker: sudo wget -qO- https://get.docker.com | sh

Step2: 查看docker版本: docker version

Step3: 启动docker服务: service docker start

Step4: 查看docker存储位置: docker info

10、 安装Jenkins in Linux

Step1: 添加存储库: yum的repo中默认没有Jenkins,需要先将Jenkins存储库添加到yum repos,执行下面的命令:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

Step2: 安装jenkins

输入命令:yum install jenkins

出现询问是否下载时,输入y,然后点击回车,耐心等待安装完成

Step3: 修改配置(jenkins安装成功后,默认的用户是jenkins,端口是8080,为了防止冲突,并且给用户赋权限,我们修改用户名和端口。)

* 进入jenkins配置文件: vi /etc/sysconfig/jenkins

* 修改port为8081, username=root

Note: 移动界面上的光标到需要修改的地方,点击‘x’删除原有的配置,点击‘i’,这时候界面下方会出现一个-- insert --,这时候就可以输入需要修改的内容;修改完成后,输入‘wq!’保存!

Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第8张图片
Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第9张图片

Step4: 启动服务: service jenkins start

Step5: 找运维同事配置端口号(例如我的是47.111.79.143:8081)

Step6: 然后在浏览器输入IP+端口,就可以打开Jenkins进行插件安装等后续操作了

Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第10张图片

11、 配置Jenkins

Step1: jenkins拿管理员密码登录: vim /var/lib/jenkins/secrets/initialAdminPassword

Step2: 输入这个命令可以看到密码: sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Step3: 在浏览器打开Jenkins并输入管理员密码,进入Jenkins

Step4: 配置jenkins的JDK

点击系统管理→全局工具配置:

从全局工具配置里面找到JDK,点击JDK安装按钮,输入JDK的别名和路径(路径应该是/usr/lib/jvm/java-1.8.0),然后点击保存

Step5: 配置jenkins的Git路径

同样在全局工具配置界面找到Git,点击Git安装按钮,输入Git的别名和路径(按照之前博客里的方法,路径应该是/usr/local/git/bin/git),然后点击保存

Step6: Git和github关联 (之前关联过了可以不用再关联了)

进入Linux服务器,输入命令生成SSH公钥私钥,邮箱需要输入自己的邮箱: ssh-keygen -t rsa -C “[email protected]

生成公钥私钥时有输入框提示你输入文件地址和密码,直接回车跳过,使用默认地址,不设置密码。

然后输入命令 tail /root/.ssh/id_rsa.pub 获取公钥

然后复制公钥,打开github,在settings→SSH and GPR keys中点击添加,输入公钥,点击保存

Step7: 构建任务

回到jenkins首页,点击新建一个自由风格的项目

在Repository URL一栏输入你的github项目地址

然后点击Add,选择jenkins,按照下图的标识选择对应的选项,点击Add:

Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试_第11张图片

然后保存设置,回到控制台,点击立即构建,进行调试。

回到控制台,进入任务模块点击快速构建,然后查看构建结果和日志

Step7: 服务器文件校验

任务构建结束后,如果没问题,可以进入服务器,通过命令 /var/lib/jenkins/workspace 进入jenkins的的工程目录,进入文件夹,可以看到相关的测试文件

到这里,使用jenkins从git仓库下载代码并进行构建,配置完成

12、 配置代码让其在linux无头模式跑

1. “–no-sandbox”参数是让Chrome在root权限下跑

2. “–headless”参数是不用打开图形界面

以下是我封装的WebDriverManager,专门处理driver的。

public class WebDriverManager {

private WebDriver driver;

private static final String WEB_DRIVER_KEY = "webdriver.chrome.driver";

public WebDriver getDriver() {

    if (driver == null) driver = createDriver();

    return driver;

}

private WebDriver createDriver() {

    System.setProperty(WEB_DRIVER_KEY, getDriverPath());

    ChromeOptions chromeOptions = new ChromeOptions();

    chromeOptions.addArguments("start-maximized");

    if (OSInfo.getOSType() == OSInfo.OSType.LINUX) {

        chromeOptions.addArguments("headless");

        chromeOptions.addArguments("--disable-gpu");

        chromeOptions.addArguments("window-size=1024,768");

        chromeOptions.addArguments("--no-sandbox");

    }

    this.driver = new ChromeDriver(chromeOptions);

    this.driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    return driver;

}

private String getDriverPath() {

    OSInfo.OSType osType = OSInfo.getOSType();

    return String.format("lib%schromedriver_%s", File.separator, osType.toString());

}

}


参考资料:

[1]: Jenkins官网: https://www.jenkins.io/doc/

[2]: 官网下载Jenkins: https://www.jenkins.io/doc/book/installing/https://www.jenkins.io/doc/book/installing/

[3]: https://blog.csdn.net/qq_39720249/article/details/84287598#%E4%BA%94%E3%80%81%E6%9F%A5%E7%9C%8Bmaven%E5%AE%89%E8%A3%85%E6%88%90%E5%8A%9F

[4]: https://www.cnblogs.com/imyalost/p/8762494.html

[5]: https://www.toolsqa.com/selenium-cucumber-framework/design-webdriver-manager/

[6]: https://medium.com/@oleksii/how-to-deploy-jenkins-agent-and-connect-it-to-jenkins-master-in-microsoft-azure-ffeb085957c0

[7]: https://www.cnblogs.com/hanguozhi/p/8892952.html

[8]: https://www.cnblogs.com/yuanzipeng/p/10739706.html

[9]: https://www.cnblogs.com/Berryxiong/p/6193866.html

[10]: https://blog.csdn.net/Fiverya/article/details/98869750?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

[11]: https://blog.csdn.net/qq_36938617/article/details/88939095

你可能感兴趣的:(Windows在Linux上搭建Java+Selenium+Cucumber+Juint+IntelliJ自动化测试)