docker下使用selenium+testng实现web自动化

java+selenium+linux(docker)实现无界面爬虫自动化扣作 docker配置查看下面链接资料 https://blog.youkuaiyun.com/songer_xing/article/details/78626592 selenuim无界面,docker->linux下运行环境安装 1 下载chrome需要的依赖包 yum install libX11 libXcursor libXdamage libXext libXcomposite libXi l... 阅读详情

Windows下selenium+testng的web自动化环境搭建

做过自动化的人,肯定对selenium web环境的搭建非常熟悉了,特别是selenium在java中的使用。

先搭建好安装好JDK,配置好java开发环境(这个如果还是不知怎么操作的话可是要打PP了)。然后从官网下载对应selenium的jar包,加载到项目里;或者是使用maven,修改pom.xml文件直接加载selenium的依赖包即可:

1 <dependency>
2     <groupId>org.seleniumhq.selenium</groupId>
3     <artifactId>selenium-java</artifactId>
4     <version>3.14.0</version>
5 </dependency>

接着加上对应的浏览器驱动文件,就基本搞定环境了,可以开始自动化测试代码之路了。

当然大家在编写代码的过程中也会用到现在流行的单元测试框架testng。如何在这基础上增加testng环境?其实这也不是什么难事,在testng的官网(https://testng.org/doc/index.html)提供了Eclipse、IEDA等编辑器下如何安装插件,比如Eclipse直接进入Market搜索testng安装即可,使用maven则需要在pom.xml中添加依赖包:

 1 <repositories>
 2   <repository>
 3     <id>jcenter</id>
 4     <name>bintray</name>
 5     <url>http://jcenter.bintray.com</url>
 6   </repository>
 7 </repositories>
 8 
 9 <dependency>
10   <groupId>org.testng</groupId>
11   <artifactId>testng</artifactId>
12   <version>6.10</version>
13   <scope>test</scope>
14 </dependency>

无脑等待下载安装完成,后续就是写代码了,然后就可以自由的挥洒了。
但是今天要介绍的不是上面这些,这种环境的搭建非常简单,大多数人其实都会,坑也不多,只是个代码环境而已。

我们这次要处理的麻烦事是什么呢?在现在日益发达的docker模式下,上述的编译环境没法在linux系统上跑了,没了代码编辑器、没了界面、也没了浏览器,那应该如何操作呢?让我们来看一看。

Docker的安装与使用

同样的,还是需要java+selenium+testng,只不过环境从windows变成了linux。

关于docker的使用这里稍稍给大家介绍一下安装、启动过程:

直接使用yum install docker命令安装;

service docker start启动docker服务;

然后docker pull centos搞定centos版本下最基本的docker镜像;

通过docker images命令可以列出当前所有镜像;

查看到linux的镜像后,使用docker run -it -d 镜像名称,让linux的容器跑起来(注意-it -d的参数,如果没有容器一闪而过就挂起了);

进入容器可先通过docker ps查看当前所有运行的容器,如果查不到,说明容器并没有启动,或者已经关闭了,docker ps会列出容器的id;

使用docker attach 容器id即可登录到容器中的linux了。

Docker下java环境搭建

容器里的linux其实和普通的linux操作是一样的了。

首先是安装jdk:

下载 jdk-8u181-linux-x64.tar.gz 包;

tar -xzvf jdk-8u181-linux-x64.tar.gz 解压,得到jdk1.8.0_181 目录(假设存放为/root/java/ 目录);

配置java的环境变量:

编辑环境变量文件:vi /etc/profile

加入内容:

1 export JAVA_HOME=/root/java/jdk1.8.0_181  
2 export JRE_HOME=${JAVA_HOME}/jre
3 export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
4 export PATH=${JAVA_HOME}/bin:$PATH

刷新环境变量配置:

source /etc/profile

确认java版本是否生效:

java -version

到这里java环境算是解决了,也没什么特别的难度,一步步来即可。

Docker下testng环境配置

接下来就是testng了,因为环境类似java而且也和环境变量有关系,所以优先解决:

下载 testng-6.14.3.jar 包;

tar -xzvf testng-6.14.3.jar解压得到testng目录(假设放在 /root/java/testng/ 目录下) ;

继续编辑环境变量文件:

vi /etc/profile

加入内容:

export TESTNG_HOME=/root/java/testng
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar

刷新环境变量配置:

source /etc/profile

注意这里的testng环境变量,其中的 CLASSPATH 是在java环境的基础上追加的,如果大家是在windows上配置,分隔符要换成 ; 且环境变量的互相调用形式不同,这是有一些区别的。

好了,可能有人会觉得,这不是很简单吗?
但是,如果这时候继续去执行的话,会发现开始报错了,也就是深坑来了,这是因为脱离了整个开发环境。

先提一下testng的执行步骤,假设自己写个test.java,记住要最简单的,别参合其他jar包之类的,其中包含包名为 simple ,类名为 test:

1 javac test.java
2 java org.testng.TestNG -testclass simple.test

看似非常简单,但是执行起来,到处都是错误,执行javac test.java,常见错误为:

java.lang.NoClassDefFoundError: com/beust/jcommander/

这是缺少因为缺少编译时用到的jar包,需要下载 jcommander-1.72.jar,我们将它放置在testng的jar包一起(假设放置在/root/java/testng/目录):

环境变量的CLASSPATH需要追加 :

CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH:$TESTNG_HOME/testng-6.14.3.jar:$TESTNG_HOME/jcommander-1.72.jar

继续刷新环境配置:

source /etc/profile

这之后一般就可以顺利编译,出现 test.class 文件了。

如果出现其他错误,比如与testng相关的包不存在等等,请检查环境变量配置是否正确。

最后就是运行的环节了,也是大家会遇到问题点最多的点了。

先提一下结构,比如上面 simple.test 的类,那么需要建立文件夹 simple 里面存放test.java。

CLASSPATH的环境变量里,需要有testng代码文件和包的顶级目录追加添加,假设为

1 /root/java/testng/
2 /root/java/testng/simple/test.java

有了这样的结构前提,就可以通过命令执行了:

java org.testng.TestNG -testclass simple.test

出现结果,意味着运行成功了:

Total tests run: 1, Failures: 0, Skips: 0

如果你的代码中有测试用例@Test,但run出现0的话,说明还是失败的,只是没有给明确的报错而已。

当然到这里还没意味着结束。

因为你可能还会遇到缺乏各种依赖的jar包的问题:

可以通过参数将这些jar包都引入

javac -Djava.ext.dirs=/root/java/jar test.java
java -Djava.ext.dirs=/root/java/jar org.testng.TestNG -testclass simple.test

远程调用windows下浏览器

以为这就搞定环境,万事大吉了么?再补一刀,浏览器呢?没有浏览器得问题应该怎么解决呢?

请使用selenium自带的server部署到windows机器上。

这个问题的解决反而是比较简单的:

下载 selenium-server-standalone-3.14.0.jar 包;

放在指定目录(比如放在C盘根目录);

cd到该目录下:cd C:\

执行命令打开selenium remote服务:

java -jar selenium-server-standalone-3.14.0.jar -port 6666

接下来有人会问怎么指定浏览器?

只需要在java代码里,使用下面语句就可以对刚才在windows启动的服务进行调用了:

WebDriver driver = new RemoteWebDriver("http://ip:6666/wd/hub/", DesiredCapabilities.chrome());

另外注意服务器上还是需要浏览器的driver驱动文件,无脑一点就和jar包放一起就完事了,爱折腾的可以自己研究一把,区别只是启动服务时需要带上一些参数。

整个docker下使用selenium+java远程调用widows下Chrome浏览器,实现web自动化的环境搭建完毕。

后续关于docker下面使用selenium+testng实现web自动化代码的编写,我们将在后续进行更新,请大家关注我们的订阅号:咕泡测试技术汇,等待我们下一次更新哟~

搭建环境如果遇到问题,或者是对web自动化有兴趣的同学可以加入我们的测试讨论群:175317069。

扫一下下面的公众号,关注我们哦!

docker selenium镜像 jdk:1.8.0-u212 + chromium + chromedriver + 中文处理 jdk:1.8.0-u212 + chromium + chromedriver 支持中文 How can I use Chinese in Alpine headless chrome? chromedriver路径 /usr/bin/chromedriver chromium路径 /usr/bin/chromium 镜像尺寸 449m dockerhub docker pull zwww7766/jdk:1.8.0-u212.chrome:latest ... 阅读详情

相关推荐

Java Selenium TestNG UI自动化框架搭建与最佳实践

UI自动化测试是现代软件工程中提升测试效率、保障交付质量的关键技术。其核心原理是通过脚本模拟真实用户操作,对Web应用界面进行自动化验证。在Java技术栈中,Selenium提供了强大的浏览器驱动能力,而TestNG则提供了灵活的测试组织与数据驱动支持,两者结合能构建出高效、可维护的自动化测试工程。这种技术组合对于实现持续集成、构建研发效能闭环具有重要价值,广泛应用于Web应用的回归测试、冒烟测试等场景。本文基于**页面对象模型**和**数据驱动**等热词,深入探讨如何从环境搭建、框架设计到高级技巧,构建一

weixin_33912246的博客 362

在docker中搭建selenium 爬虫环境(3分钟快速搭建)

搭建爬虫环境时可以使用docker快速搭建爬虫环境,不受系统环境的影响

weixin_72388638的博客 4278

IDEA搭建Java+Python混合自动化框架:Selenium/TestNG与Pytest/Playwright集成指南

在软件测试与自动化开发领域,集成开发环境(IDE)是提升效率的核心工具。其核心原理在于通过统一的界面管理代码、依赖和构建流程,减少上下文切换。对于需要同时维护Java与Python技术栈的团队而言,这一价值尤为突出,它能有效解决工具链割裂导致的配置繁琐与协作低效问题。常见的应用场景包括Web自动化测试、API测试以及需要混合语言协作的持续集成流水线。本文聚焦于利用IntelliJ IDEA强大的插件生态,将其打造为统一的多语言自动化工作台,详细演示了如何在一个项目中并行管理基于Selenium与TestNG

weixin_33885676的博客 480

Docker 使用 Selenium:在容器化环境中运行自动化测试

本文介绍了在Docker容器环境中使用Selenium进行自动化测试的方法。这套方案能够有效解决测试环境不一致问题,提高自动化测试的可靠性和可重复性。

苟日新,日日新,又日新!!! 1627

TestNG自动化测试框架:从核心原理到企业级实战应用

在软件测试领域,自动化测试框架是提升测试效率与可靠性的核心基础设施。其基本原理在于通过预设脚本模拟用户操作或系统交互,自动执行测试用例并验证结果,从而将测试人员从重复劳动中解放出来,实现快速反馈与持续验证。这一技术价值显著,尤其在敏捷开发和DevOps实践中,是保障软件质量、加速发布流程的关键环节。其应用场景广泛覆盖单元测试、集成测试及端到端测试等多个层面。本文聚焦于TestNG这一历经考验的Java测试框架,它凭借面向集成测试的设计哲学,提供了强大的分组管理、依赖测试、数据驱动和并行执行能力,成为构建复杂

weixin_30776545的博客 363

基于ReportPortal构建TestNG+Selenium自动化测试报告驾驶舱实战

自动化测试是现代软件工程中保障质量的关键环节,其核心原理是通过脚本模拟用户操作,对软件功能进行验证。传统的测试报告通常以分散的日志和截图形式存在,导致结果分析效率低下,难以快速定位问题。ReportPortal作为一个开源的测试报告与分析平台,通过提供实时、集中化、智能化的测试过程管理,显著提升了测试结果的可视化与洞察效率。该平台能够主动分析测试结果、追踪缺陷并展示趋势,特别适用于中大型项目和追求DevOps或持续测试的团队。在技术实现上,通过将Python、TestNG、Selenium与ReportPo

weixin_33859135的博客 271

docker+selenium(基于selnenium grid) 实现分布式UI自动化

Selenium Grid作用就是分布式执行测试,讲分布式之前还是要说说UI自动化的优势来突出Selenium Grid,最简单的两点解决重复执行测试、解决多浏览器兼容这是UI自动化的价值;那分布式是什么概念?简单的说就是老大收到任务,分发给手下去干;通过Selenium Grid的可以控制多台机器多个浏览器执行测试用例,分布式上执行的环境在Selenium Grid中称为node节点。所谓的分布式结构就是由一个hub节点和若干个node代理节点组成。Hub用来管理各个代理节点的注册信息和状态信息,并且接受

qq_40132294的博客 1万+

Java+Selenium+Appium自动化测试:从环境搭建到CI/CD集成的完整实践

自动化测试是现代软件工程保障质量、提升效率的核心实践。其原理是通过脚本模拟用户操作,对软件功能进行重复、可靠的验证,从而将测试人员从繁琐的手工劳动中解放出来,实现快速反馈和持续交付。在技术选型上,Selenium作为Web UI自动化测试的事实标准,通过WebDriver协议驱动浏览器;而Appium则基于相同协议扩展,成为覆盖Android与iOS的移动端自动化“瑞士军刀”。选择Java作为实现语言,能充分发挥其强类型系统、丰富测试生态(JUnit/TestNG)和卓越工程化管理(Maven/Gradle

weixin_33895516的博客 433

Docker下使用selenium+testng实现web自动化

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33850890的博客 153

Selenium面试题解析与自动化测试实战指南

Selenium作为Web自动化测试的核心工具,通过模拟用户操作实现浏览器自动化。其工作原理基于WebDriver协议,支持跨浏览器测试和分布式执行。在测试框架中,TestNG注解体系提供了灵活的测试生命周期控制,而数据驱动测试则通过外部数据源实现用例复用。企业级应用中,Selenium常与持续集成工具(如Jenkins)结合,配合Allure等报告系统构建完整的自动化测试流水线。本文重点解析Selenium高频面试题,涵盖元素定位策略、断言机制、异常处理等核心技术点,并分享TestNG框架优化、分布式测试

weixin_30432579的博客 375

Web自动化实战:从Gulp到Selenium与云端测试的完整指南

Web自动化是现代软件开发中提升效率与保障质量的关键技术,其核心原理是通过脚本或工具模拟用户操作,自动执行浏览器任务。这项技术的价值在于实现测试与构建流程的一致性和可重复性,显著提升持续集成与部署(CI/CD)的可靠性。在实际应用场景中,Web自动化主要分为构建流程自动化(如使用Gulp进行代码检查与转换)和浏览器操作自动化(如利用Selenium进行端到端测试)。通过结合本地任务运行器与云端测试服务,开发者可以构建覆盖多浏览器、多设备的健壮测试体系。本文聚焦于Selenium、Gulp等热词工具,深入探讨

Liusuzhi19610221的博客 1275

ReportPortal与Selenium集成:如何实时监控Web自动化测试的完整指南 [特殊字符]

ReportPortal是一个强大的开源测试报告平台,专为现代自动化测试团队设计。通过**ReportPortal与Selenium集成**,您可以实现Web自动化测试的实时监控、智能分析和团队协作。在本文中,我将详细介绍如何搭建这个强大的组合,让您的测试报告管理变得更加高效和专业!✨ ## 📊 为什么选择ReportPortal进行Selenium测试监控? **ReportPortal*

gitblog_01402的博客 577

自动化测试框架实战指南:从Pytest到Selenium的10大框架选型与应用

自动化测试框架是软件质量保障体系中的核心组件,它通过提供脚本组织、数据驱动、前置后置条件管理等工程化解决方案,将测试活动从手工操作提升为可重复、可维护的自动化流程。其核心原理在于分离测试逻辑与测试数据,通过模块化设计实现用例的高效管理与执行。在技术价值层面,一套优秀的框架能显著提升测试效率、降低维护成本,并确保测试结果的可靠性。当前,随着微服务与前后端分离架构的普及,接口自动化测试成为基石,而Web UI自动化、移动端测试及性能测试也各有其专业框架支撑。在实际应用场景中,针对Python技术栈,Pytest

weixin_30340819的博客 400

从零构建Web自动化测试框架:Selenium+TestNG实战与POM模式详解

Web自动化测试是现代软件工程中保障产品质量、提升迭代效率的关键实践。其核心原理是通过脚本模拟用户操作,对Web应用进行功能验证与回归测试。在技术选型上,Selenium WebDriver因其跨浏览器兼容性和庞大的社区生态,成为理解自动化底层原理的经典选择。结合TestNG测试框架,可以实现灵活的生命周期管理和数据驱动测试,显著提升测试用例的组织效率和可维护性。采用Page Object Model设计模式,将页面元素与操作逻辑封装成独立对象,是实现代码高内聚、低耦合的最佳实践,能有效应对UI频繁变更带来

weixin_30410119的博客 414

IP路由原理、静态路由及动态路由区分

什么是路由 路由是指导IP报文发送的路径信息。 直连路由:目的地所在网络与路由器直接相连。 间接路由:目的地所在网络与路由器非直接相连。 静态路由是由管理员手工配置而生成的路由。 动态路由路由器使用路由协议从其他路由器那里获悉的路由。

weixin_42227328的博客 5471

Qt Creator设计器里也能拖拽?5步将你的QML自定义控件变成可视化插件(Qt6.5+)

本文详细介绍了如何在Qt Creator设计器中实现QML自定义控件的可视化拖拽功能(Qt6.5+)。通过5个步骤,从构建可插件化的QML控件基础到部署插件到设计器环境,帮助开发者将自定义控件转化为设计器插件,提升团队协作效率。特别适合需要频繁调整UI样式的开发场景。

weixin_29214559的博客 171

测试面试必备:与Selenium集成的自动化测试工具实现持续测试

在当今快速迭代的软件开发环境中,持续测试已成为DevOps流程中不可或缺的一部分。Selenium作为最流行的Web自动化测试框架之一,可以与多种工具集成以实现高效的持续测试。本文将介绍一些可以与Selenium集成的优秀工具,并提供Java代码示例和流程图帮助理解。

qq_58299462的博客 1266

手把手带你搭建一个语音对话机器人:5分钟定制个人AI小助手

通过本文的简单步骤,你已经掌握了如何用 Python 搭建一个语音对话机器人。我们使用了实现语音识别,利用 OpenAI API 生成对话内容,并通过gTTS将文本转换为语音。整个流程非常简洁,你可以根据自己的需求进一步扩展机器人功能,甚至将其集成到实际的应用场景中。

小蜗牛的珍贵百宝箱 4806

从功能测试到掌握自动化,四个月时间我是如何从点工进入互联网大厂

年关了,回望2022年,你的这个2022年收获咋样啦。各大招聘网站,测试工程师月薪一万以上基本都有一个必备技能,那就是自动化测试。那么自动化测试到底难不难呢?下面我将会将我的经历讲给大家听,希望听完后,大家会有自己的一个判断。

软件测试技术分享 453

TBtools的序列提取步骤

本教程详细介绍了如何使用TBtools软件从原来的FASTA序列中提取特定的DNA序列。

weixin_47509995的博客 1万+

Ferry工单平台部署

ferry工单平台部署

运维求生之路 1897
上一篇: 【腾讯T6技术专家时间管理法】工作中别做这七件浪费时间的事了!
下一篇: 基于websocket协议的压力测试
TestingGDR
博客等级 码龄8年 496粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值