[Web React] Selenium自动化测试

AirtestIDE 5分钟搞定Web自动化测试:Selenium图形化与Chrome配置秘籍 Web自动化测试是软件测试领域的关键技术,它通过模拟用户操作实现网页功能的自动化验证,其核心原理是借助浏览器驱动与浏览器进行通信。这项技术的价值在于提升测试效率、保证回归测试的稳定性,并广泛应用于Web应用的功能测试、兼容性测试等场景。在众多工具中,Selenium因其强大的跨浏览器支持而成为行业标准,但其配置和API对新手有一定门槛。本文聚焦于如何利用AirtestIDE这一图形化工具,快速上手Selenium进行Web自动化测试。文章将深入解析AirtestIDE与Selenium的集成原理,并重点分享 阅读详情

SeleniumAutoTest

Based on chromedriver auto test webui

项目源代码:

https://github.com/liang-faan/SeleniumAutoTest.git

Step.1 download chromedriver (下载chromedriver)

Access below URL and download the chromedriver version according to your local Google Chrome browser version

1.1 how to check Google Chrome version (查看本地chrome版本)

Click Chrome Version or enter "chrome://version" in your Google Chrome address bar

Sample Google Chrome Version

1.2 download chromedriver via below URL.(下载chromedriver)

*Do remember download the right version according to your browser version *

ChromeDriverDownload

Step.2 - (Optional Step) initial java test project. Here I used spring boot initializr to initial a java project based on gradle (利用spring initialzr初始化项目)

2.1 Access Springboot initializr

2.2 Select the option as below:

Note: in here we only choose spring DevTools dependency

Step.3

3.1 Import the project in IntelliJ IDEA as gradle project

3.2 Update build.gradle as below

Here we remove springboot dependencies as we only testing via selenium

plugins {
	id 'java'
//	id 'org.springframework.boot' version '3.0.1'
//	id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.lfa'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
	mavenCentral()
}

dependencies {
//	implementation 'org.springframework.boot:spring-boot-starter'
//	developmentOnly 'org.springframework.boot:spring-boot-devtools'
//	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'org.springframework.boot:spring-boot-starter-log4j2:2.7.7'
    //remove springboot test but we required Junit here
	testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1'
    // import selenium-java
	testImplementation 'org.seleniumhq.selenium:selenium-java:4.7.2'
    // extentreports will be used to generate selenium html report
	testImplementation 'com.relevantcodes:extentreports:2.41.2'
	compileOnly 'org.projectlombok:lombok:1.18.24'
	annotationProcessor 'org.projectlombok:lombok:1.18.24'
	testCompileOnly 'org.projectlombok:lombok:1.18.24'
	testAnnotationProcessor 'org.projectlombok:lombok:1.18.24'

}

tasks.named('test') {
	useJUnitPlatform()
}

3.3 Create BaseTest class to have basic control on web driver & selenium report

    /***
     * initial test report
     */
    @BeforeAll
    public static void startTestReport(){
        seleniumReports = new ExtentReports(EXTENT_REPORT_PATH);
    }

    /**
     * Initial webdriver with system properties
     * define window size
     */
    @BeforeEach
    public void initialWebDriver(){
        System.setProperty("webdriver.chrome.driver", CHROME_DRIVER_PATH);
        System.setProperty("webdriver.chrome.logfile", CHROME_LOG_PATH);
        System.setProperty("webdriver.chrome.verboselogging", "true");
        webDriver = new ChromeDriver();
        webDriver.manage().window().setSize(new Dimension(1200, 1024));
        webDriverWait = new WebDriverWait(webDriver, Duration.ofSeconds(3));
    }

    /**
     * close webdriver after each test case
     */
    @AfterEach
    public void stopWebDriver(){
        // if only single testing, we can use webDriver.quit()
        // webDriver.quit();
        webDriver.close();
    }

    /**
     * Close test report and write to disk
     */
    @AfterAll
    public static void closeTestReport(){
        seleniumReports.flush();
        seleniumReports.close();
    }

3.4 extend BaseTest and create our first selenium test case - Login

- Note: Create test case under ExtentReport when test start

- Note: Better log down every steps/actions

    @Test
    public void testLogin(){
        ExtentTest test = seleniumReports.startTest("Test Login");
        test.log(LogStatus.INFO, "Start access web URL");
        webDriver.get(URL);
        test.log(LogStatus.PASS, "Success Open Website");

        test.log(LogStatus.INFO, "Start finding login button");
        WebElement loginLink = webDriverWait.until(ExpectedConditions.presenceOfElementLocated(By.id("tl-cms-nav-login")));
        assertNotNull(loginLink);
        test.log(LogStatus.PASS, "Success find login link");
        loginLink.click();
        test.log(LogStatus.PASS, "Success open Login page");

        //to start xpath https://www.w3schools.com/xml/xpath_intro.asp
        test.log(LogStatus.INFO, "Start finding login username text box");
        WebElement loginUserName = webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id=\"tl-shared-username\"]")));
        assertNotNull(loginUserName);
        test.log(LogStatus.PASS, "Success find login username text box");
        test.log(LogStatus.INFO, "Enter user name");
        loginUserName.sendKeys(USER_NAME);
        test.log(LogStatus.PASS, "Success Enter username");

        test.log(LogStatus.INFO, "Start finding password text box");
        WebElement loginPassword = webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.name("password")));
        assertNotNull(loginPassword);
        test.log(LogStatus.PASS, "Success find password text box");
        test.log(LogStatus.INFO, "Enter password");
        loginPassword.sendKeys(PASS_CREDENTIAL);
        test.log(LogStatus.PASS, "Success Enter password");

        test.log(LogStatus.INFO, "Start find login button");
        WebElement loginSubmit = webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.name("submit")));
        assertNotNull(loginSubmit);
        test.log(LogStatus.PASS, "Success find login button");
        test.log(LogStatus.INFO, "Start Click Login button");
        loginSubmit.click();
        test.log(LogStatus.PASS, "Success click Login button");

        test.log(LogStatus.INFO, "Validate Success Login URL: "+URL_SUCCESS_LOGIN);
        assertTrue(webDriverWait.until(ExpectedConditions.urlMatches(URL_SUCCESS_LOGIN)));
        test.log(LogStatus.PASS, "Success Login URL matched");

        seleniumReports.endTest(test);

    }

3.5 after success test and verify test report (项目测试效果)

Web自动化测试:Checkbox与Radiobutton定位策略与实战 在Web自动化测试中,元素定位是核心基础,它直接决定了脚本的稳定性和可靠性。其原理在于通过识别HTML文档中的特定节点,实现程序对页面控件的精确操控。掌握高效的定位技术,能够显著提升自动化测试的效率和可维护性,广泛应用于表单填写、数据筛选、配置项操作等场景。本文聚焦于表单中常见的复选框(checkbox)和单选按钮(radiobutton),深入剖析其DOM结构特性与交互逻辑。针对这些元素常因框架封装或状态管理而导致的定位难题,文章将系统讲解通过XPath、CSS Selector等策略进行精准定位的方法, 阅读详情

相关推荐

Java Selenium 影子DOM自动化测试框架设计与实战

Web Components 是现代前端开发中实现组件封装与样式隔离的关键技术,其核心机制之一便是影子DOM。影子DOM通过创建独立的DOM子树,实现了组件内部的封装性,但这为自动化测试带来了挑战,因为传统的元素定位方法无法直接穿透这层隔离。从技术原理上讲,自动化测试工具需要通过执行特定的JavaScript脚本来访问影子根内部,这涉及到对浏览器渲染引擎和DOM API的深入理解。其技术价值在于,能够为使用Vue、React等框架并大量采用Web Components的现代Web应用,提供稳定、可维护的自动

weixin_28835551的博客 245

Python自动化报错:The chromedriver version (114.0.5735.90) detected in PATH at D:\Python\Scripts\chromedri

今早运行selenium程序,突然报这个错误,我也不知道是什么原因,毕竟昨天运行这个程序是可以正常打开当前谷歌浏览器的。看错误信息,说是因为谷歌浏览器和谷歌驱动程序的版本不一致,可是,我的两个版本都是119.啊!删掉之后就可以正常运行程序了。我也不知道什么原因我的这个目录下会多出一个谷歌驱动程序。仔细查看报错信息,终于找到报错根源所在,说在。下的谷歌驱动程序与谷歌浏览器的版本不一致。

坚持不懈的大白的博客 4585

Selenium自动化测试入门:从环境搭建到实战应用

在软件测试领域,自动化测试已成为提升效率和保障质量的关键技术。其核心原理是通过编写脚本模拟用户操作,替代重复的手工测试,实现快速、精准的验证。这项技术的价值在于将测试人员从繁琐的执行中解放出来,使其能专注于更复杂的测试设计和质量分析。随着Web应用复杂度的增加和CI/CD的普及,自动化测试在回归测试、兼容性测试等场景中变得不可或缺。本文以Selenium这一主流工具为例,深入讲解其环境配置、元素定位、等待机制等核心概念,并结合Python实战演示如何构建稳定的测试用例。通过理解Selenium WebDri

weixin_42522669的博客 328

pycharm中使用selenium遇到chromedriver版本不正确的解决方法

pycharm中使用selenium遇到chromedriver版本不正确的解决方法 chromedriver经常自动更新,某天使用selenium进行web自动化执行用例失败,这时候要查看一下谷歌浏览器的版本是否自动更新了,如果更新了,要相应的下载对应版本和系统的chromedriver。 下载地址:https://chromedriver.storage.googleapis.com/index.html 下载成功后,把对应的地址配置到系统环境变量中: 重启pycharm,再执行用例。 如果还是失败

weixin_37940503的博客 2516

Selenium自动化测试:非标准下拉框的实战解决方案

在Web自动化测试中,下拉框是常见的交互控件。标准HTML的<select>元素可以通过Selenium的Select类轻松处理,其原理是利用浏览器原生API进行选项选择。然而,现代前端开发中广泛使用Element UI、Ant Design等框架构建的自定义下拉组件,这些非标准控件由<div>、<ul>等通用标签动态渲染,打破了W3C标准,导致Select类失效。理解DOM结构与JavaScript事件机制成为解决此类问题的技术关键。通过模拟真实用户操作流程——触发展开、定位选项、选择确认——并结合直接点

weixin_30129025的博客 304

Selenium、Appium、Cypress自动化测试工具实战对比与选型指南

自动化测试是软件研发中保障质量、提升效率的关键实践。其核心原理是通过脚本模拟用户操作,对软件功能进行系统化验证,从而替代重复的手工测试。从技术价值看,自动化测试能实现快速回归、持续集成,是DevOps流程的重要支撑。在应用场景上,针对Web、移动端等不同平台,衍生出了多种工具。其中,Selenium作为Web自动化的行业标准,基于WebDriver协议,支持多语言和全浏览器,适合企业级复杂场景。Appium则基于相同协议,充当移动端测试的“翻译官”,实现iOS和Android跨平台脚本复用。Cypress采

weixin_28832121的博客 268

2021-07-08 selenium 报错:‘chromedriver’ executable needs to be in PATH. 解决

selenium 报错:‘chromedriver’ executable needs to be in PATH. 解决 出现这个问题解决方案三步: 1.在chrom浏览器输入:chrome://version/ 查看版本信息 如: 2.在这个网站找到对应的Chromedriver版本:http://chromedriver.storage.googleapis.com/index.html 如果找不到完全一致的,找到差不多的也行,像我的这样: 然后在里面选择自己电脑对应的系统即可,我电脑是win64位

weixin_43582691的博客 1215

Atata框架:基于.NET的Web自动化测试高效解决方案

Web自动化测试是软件质量保障的关键环节,其核心原理是通过程序模拟用户操作,验证Web应用的功能与稳定性。在众多技术方案中,基于Selenium WebDriver的框架因其跨浏览器兼容性而广泛应用,但原生Selenium的代码往往冗长且维护成本高。为此,页面对象模型(POM)等设计模式被引入,旨在提升代码的可读性和复用性。Atata框架正是在此基础上,通过“约定优于配置”和声明式编程理念,将POM模式极致抽象,并内置了智能的自动化等待与同步机制,显著提升了测试脚本的开发效率和健壮性。其技术价值在于,它让测

weixin_31822733的博客 251

报错The chromedriver version cannot be discovered以及下载chromedriver.exe和查看其版本的命令

在使用selenium的时候,出现报错,The chromedriver version cannot be discovered。将chromedriver.exe放入项目的根目录中,同时放入python3.8的Scripts目录中。如果想要比较新的chrome浏览器对应的chromedriver,需要下面的链接。(1)首先要下载对应的chromedriver。如何找到python的路径呢?(2)下载好以后解压。

kxltsuperr的专栏 2231

react-selenium:搭载Selenium WebDriver的React App可自动化开发工作,涵盖各种测试用例

ReactSelenium 使用Selenium框架的React应用程序。 为什么是Selenium? Selenium WebDriver提供了用于创建和执行测试用例的编程接口。 它使我们的开发自动化,并且每个开发人员现在都必须编写单元测试用例,以便他们更好地管理代码。 先决条件 [Firefox和Chrome浏览器] 正在安装 git clone git@github.com:BalasubramaniM/react-selenium.git 并重复 cd react-selenium npm start 运行测试 这是重要的阶段,我们将使用Selenium框架测试我们的应用程序。 打开新终端并发布, npm run s-test 从您的根目录。 中级教程 逐步说明以了解@ 可用项目背后的概念 作者 Balasubramani M-初始工作 执照 此项目已获得MIT许可证的许可-

react-selenium-ui-test-example:示例项目显示了如何将Selenium Webdriver与Mocha结合使用以在本地环境中运行UI级别测试

ReactSeleniumUI测试的例子 示例项目显示了如何将Selenium Webdriver与Mocha结合使用以在本地环境中运行UI级别测试。 它正在使用本地node.js服务器(expressJS)来模拟应用程序进行的api调用(请参阅 ) 在本地运行 从提取主分支 在项目文件夹中运行yarn install:all以安装所有项目依赖项(适用于应用程序以及模拟api服务器) yarn run start:all出于开发目的在localhost:3000启动一个localhost服务器,并在localhost:8080启动模拟api服务器。 运行测试 确保您已安装并下载了并在PATH环境变量中进行了设置 确保该应用程序在本地主机localhost:3000上运行(请参见上面的“在本地运行”) yarn run test:ui运行所有Selenium UI测试 UI测试实施 Se

解决This version of ChromeDriver only supports Chrome version XXX

4.找到之后,前往对应目录,替换已经下载的chromedriver可执行文件(对应的几个目录都要替换哦)如果上面链接中没有自己chrome对应的版本,可以随机取一个,中间版本号替换为自己的chrome版本号。5.把上面lib文件夹下的chromedriver.js文件打开,替换文件中的version,保存。1.先确定chrome的版本(chrome设置-关于chrome,确定自己的版本号)解决方案有两个:降级/升级chrome,替换chromedriver的可执行文件。

chenfeng_he的博客 3613

ADS 2024实战:手把手教你搞定2.3-3.5GHz宽带Doherty功放仿真与版图(附源文件)

本文详细解析了在ADS 2024环境中实现2.3-3.5GHz宽带Doherty功放的全流程设计,包括仿真与版图实现。从软件环境搭建、器件模型导入到核心电路设计、匹配网络优化,再到系统集成与版图生成,提供了实战技巧和关键参数设置。特别针对5G通信和卫星应用中的高效率需求,展示了如何通过ADS 2024的新功能提升设计效率。

weixin_42639246的博客 461

Selenium 应对前端框架:Vue/React 环境下的 Web UI 自动化测试

前端框架如 Vue 和 React 的普及使得现代 Web 应用开发更加高效,但也给自动化测试带来了新的挑战。Selenium 作为经典的 Web UI 自动化测试工具,需要针对这些框架的特点进行适配和优化。通过以上方法,可在 Vue/React 环境中构建稳定可靠的 Selenium 测试体系,有效覆盖现代前端应用的测试需求。关键是根据框架特性调整定位策略,合理处理异步流程,并建立完善的测试基础设施。需要结合框架特性调整等待策略和元素定位方法。:对可复用的 Vue/React 组件单独验证。

ajskghd的博客 1660

通义千问语言模型Qwen2.5架构详解

此外,将基于API的模型 Qwen-Plus 与领先的专有和开源模型进行了对比,包括 GPT4-o、Claude-3.5-Sonnet、Llama-3.1-405B和DeepSeek-V2.5。Qwen2.5-Math-72B-Instruct的整体性能超越了Qwen2-Math-72B-Instruct和GPT4-o,甚至是非常小的专业模型如 Qwen2.5-Math-1.5B-Instruct也能在与大型语言模型的竞争中取得高度竞争力的表现。近来也出现了明显的转向小型语言模型(SLMs)的趋势。

搏博的专栏 1万+

【物联网】探索NE555:一款经典的集成电路(超详细)

NE555是一种集成电路,其内部结构包括比较器、RS触发器、电压比较器和输出级三个主要功能模块,外部引脚则提供了与其他电路元件进行连接的接口。NE555的设计目的是为了提供一种简单方便的定时器解决方案,它广泛应用于模拟和数字电路中。NE555作为一款经典的集成电路,具备设计简单、易于使用和稳定可靠的特点,在电子领域发展了广泛的应用。从单稳态模式到多稳态模式,再到振荡器模式,NE555可以满足不同的需求,并且可以与其他电路元件灵活组合,扩展其功能。然而,需要注意的是NE555也有一些限制。

Goforyouqp的博客 6万+

FluentLenium终极指南:从Selenium到React-ready的UI自动化框架革命

FluentLenium是一个强大的Web和移动端自动化测试框架,它扩展了Selenium的功能,为开发者提供了编写可靠、健壮的UI功能测试的终极解决方案。这个框架完全支持React应用,由日常进行浏览器自动化测试的专业人员编写和维护。🚀 ## 为什么选择FluentLenium?🤔 如果你正在寻找一个能够简化UI自动化测试的框架,FluentLenium正是你需要的工具!它不仅解决了Se

gitblog_00735的博客 781

2025浏览器指纹伪装终极指南:Playwright修改WebGL+时区+分辨率,小红书爬1000条零验证

2025年小红书的反爬已经进入“多维校验”时代,单纯修改某一个指纹维度已失效。本文方案的核心是“让所有特征都一致且合理”——WebGL+Canvas+时区+分辨率+UA+行为,形成一个完整的“真实用户画像”,让小红书的反爬系统无法区分是爬虫还是真人。这套方案不仅适用于小红书,也可迁移到知乎、抖音、跨境电商等其他高反爬平台,只需替换对应的指纹库和数据提取逻辑。记住:指纹伪装的本质不是“欺骗”,而是“模拟真实”,把每个细节都做到和人类一致,自然就能实现“零验证”爬取。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3071

终极指南:如何使用 FluentLenium 简化 Web 自动化测试 [特殊字符]

FluentLenium 是一个强大的 Web 和移动自动化测试框架,它扩展了 Selenium 的功能,帮助开发者编写可靠、可维护的 UI 功能测试。这个框架专为 React 应用优化,由每天进行浏览器自动化测试的专业人士编写和维护。无论您是测试新手还是经验丰富的 QA 工程师,FluentLenium 都能显著提升您的测试效率和代码质量。 ## 为什么选择 FluentLenium?🌟

gitblog_00234的博客 690

手把手教你排查libstdc++.so.6版本问题:从GLIBCXX缺失到完美解决

本文深入解析Linux系统中常见的GLIBCXX版本缺失问题,以`ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found`为例,从动态链接原理入手,提供使用`strings`和`find`命令的诊断方法,并详细对比了四种解决方案的优缺点。文章重点推荐通过设置`LD_LIBRARY_PATH`或更新系统库的安全策略,并最终建议使用Docker容器化技术实现环境依赖的根治与统一管理。

j7k8l的博客 301

地平线旭日X3 安装xfce桌面+VNC查看USB摄像头

VNC是Virtual Network Computing的缩写,它是一种使用RFB(Remote Frame Buffer)协议的用于控制远程电脑的图形桌面分享系统。xfce桌面相比于GNOME桌面更加轻量,占用的资源更少,在没有GPU的设备上也可以运行(旭日的Desktop版本从外观上好像就是xfce桌面,具体没有尝试)。可以使用专用的VNC客户端连接到开发板,例如vnc viewer。板子默认带有openssh-server,因此,WiFi热点连接成功后,就可以使用ssh登录开发板了。

bingdund的博客 509

app自动化基础

app和web比较 app和web都属于UI测试,同等重要 技术栈不同 web:html.css.js 安卓:java,kotlin ios: object-c,swift 新的开发模式:web技术做安卓,ios的开发。reactnative,weex 新的开发模式:谷歌官方:dart语言() appium解决的问题 selenium只能操作web,不能操作手机 手机端使用不同的语言开发的,需要学各种语言 appium特点与学习方式 学习时selenium比appium更重要,web比app更重要。 app

weixin_52395571的博客 127

【量化入门】Tushare库获取公募基金的历史净值

在本文中,我们将介绍如何使用Python的Tushare库获取公募基金的历史净值。

木头大左的博客 1144

Web自动化测试进阶:掌握JavaScript DOM操作,解决元素交互难题

Web自动化测试的核心在于与页面元素的稳定交互,这离不开对DOM(文档对象模型)的深入理解。DOM是浏览器将HTML文档解析成的树形结构,JavaScript通过操作DOM节点来实现对页面元素的查找、读写和事件触发。掌握这项技术能显著提升测试脚本的健壮性和执行效率,尤其在处理动态加载、复杂交互和现代前端框架时。通过直接执行JavaScript,测试工程师可以绕过标准API的限制,精准获取元素状态、模拟用户操作,并优化批量查询性能。本文将结合Selenium和Playwright等工具,详解如何在自动化测试中

weixin_30529023的博客 261

将Windbg附加到软件进程上排查异常闪退的问题

使用Windbg和Process Explorer排查因为内存泄漏导致的软件异常闪退问题。

dvlinker的技术专栏 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

OpenClaw自动化测试:ollama-QwQ-32B模拟用户操作验证Web应用

本文介绍了如何在星图GPU平台上自动化部署【ollama】QwQ-32B镜像,实现Web应用的智能自动化测试。通过OpenClaw工具结合该镜像,可以模拟用户操作验证Web应用,如电商系统的商品搜索、加入购物车等核心流程,显著提升测试效率和适应性。

weixin_28872035的博客 220

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 【Mariadb/Mysql】利用JSON函数巧妙实现行列置换提高系统效率
下一篇: #Neo4j Graphic DB 图型数据库入门
梁发安
博客等级 码龄19年 14粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值