开源测试工具/社区(Selenium /OpenQA.org)——今非昔比

开源测试工具Selenium或者说开源测试社区OpenQA.org已是今非昔比,前,我曾经介绍过Selenium IDESelenium CoreSelenium RC强大的Web开源测试工具—Selenium)。如今,这个家族又增添了不少新成员,例如

  • 分布式测试环境—— Selenium Grid
  • 强大的功能测试框架和平台- CubicTest
  • 单元测试 Java Floyd
  • 测试管理工具—— Bromine
  • Java 、轻量级应用的测试工具—— Frankenstein
  • Rails 应用测试方法—— Selenium on Rails
  • C# / Ruby 脚本录制工具—— Watir Maker
  • 基于 Watir Web 测试工具—— WET
  • 构建 Java 单元测试的一套工具—— JTC Java Testing Commons

 

1.分布式测试环境——Selenium Grid(网格)

Selenium Grid能充分地利用测试环境中的机器,允许同时并行地、在不同的环境上运行多个测试任务,极大地加快Web应用的功能测试.

基于优秀的Web测试工具SeleniumSelenium Grid可以并行地运行多个Selenium Remote ControlRC,远程控制)的实例,而且可以在一台机器上就能控制它们,而不要在乎实际的物理环境。这样,Selenium Grid可以大大地节省测试执行的时间。

对于Selenium RC,又提供了很好的灵活性,测试脚本可以由Ruby, Java, Python, C#, PHP, ...等不同的语言来开发。

最后,告诉大家,Selenium Grid容易安装,也容易使用.


 

 

 

2. 强大的功能测试框架和平台-CubicTest

CubicTest 成为领先的Web功能测试的综合开发环境,虽然现在有很多不同的测试框架,但是CubicTest 具有协调各种相关的Web元素之间的相互作用而独树一帜。不必作为一个程序员去理解CubicTest,唯一要关注的就是要测试Web页面上所能看到的界面元素,而不是HTML源代码。

CubicTest 强力支持 “不重复自己(Don't Repeat YourselfDRY)”和“测试优先” 两大原则。DRY原则通过子测试(subtests,被其它测试调用的测试)实现通用化(Commons)、参数化(parameterization)和抽象等特性,从而使自动化功能测试变得容易。通过图形化建模和HTML输出等特性,CubicTest实现了测试优先的策略。

 CubicTest借助像elenium Watir的优秀测试框架来驱动测试,而且是图形化方法实现,从而使人们非常容易理解和使用框架。直到最近发布的1.8.6版本,CubicTest才充分发挥了Selenium的所有潜力,并在不久的将来,也能很好支持Watir

CubicTest 1.8.6的新特性:

  • 支持多帧(multi-frames)结构
  • 国际化(I18N)支持,多国语言的站点
  • 自定义步骤,具有调试的能力
  • 捕获各种HTML和图像的问题

 

3. 单元测试Java Floyd

Floyd是为了更容易实施Web应用的自动化测试而建立的Java.它提供了对像MozillaIE这样标准的浏览器的完全控制能力,以实现Java单元测试。通过调用Floyd's Java API,可以实现浏览器的交互和页面装载,这样可以模拟用户对真实的web浏览器的交互作用。

对于Java web应用,可以采用内嵌式Web服务器来提高测试能力,如访问服务器的session,获取向服务器发出的请求和服务器的响应。Floyd不是对JUnit类的扩张,所以它可以应用于各种单元测试之中,不局限于JUnit TestNG


4. 测试管理工具——Bromine

Bromine 是集成了Selenium Core Selenium Remote Control、完全成熟的QA工具,从而使从事Web应用测试的测试经理和测试工程师的工作变得轻松和有效。借助Bromine,我们可以非常容易(点点鼠标)跟踪和管理测试项目、需求、测试计划、测试用例和缺陷,也可以管理Selenium RC的节点以及像手工测试那样一步一步地执行测试脚本。例如测试人员可以执行所录制的、绑定Selenium IDE格式的脚本,并监控缺陷的提交和将缺陷分派给相应的开发人员。

 

 

  • 完全成熟的QA工具
  • 创建项目
  • 将需求和项目绑定起来
  • 将测试和需求绑定起来
  • 容易组织和执行测试
  • 浏览和分析测试结果
  • 提交缺陷报告
 

 

 

5.最后以一个不是笑话的笑话结束

你们知道上面几个测试工具(SeleniumBromine等)的名字为什么取得那么难认?

Selenium是硒的英文名称,硒是天然的解毒剂,对有害重金属离子的天然解毒作用,可以解除汞(Mercury)毒,实验表明汞暴露水平越高,硒对汞毒性的拮抗作用越明显,所以说硒是汞的克星, SeleniumMercury的克星,你知道Mercury 的测试工具吗?做过自动化测试的人都知道:)

溴(Bromine)是非金属单质里面唯一的液体,也是一种很好的微量元素,矿泉水中就有一项质量指标,即溴化物≥1.0 ,溴能调节中枢神经系统活动,具有安定情绪和镇静作用。在医院里普遍使用的镇静剂,有一类就是用溴的化合物制成。

有了Selenium工具,就不需要花费几十万甚至几百万钞票去买Mercury的产品;有了Bromine 调节,我们就不会着急,可以轻松自如地管理软件测试,享受工作和生活。

 

参考:

<think>好的,我现在需要解决用户提到的Appium 8.5.1中出现的java.lang.IllegalAccessError问题,特别是关于io.appium.java_client.AppiumClientConfig和selenium的remote http ClientConfig版本不兼容的情况。首先,我应该回顾用户提供的引用内容,看看是否有相关的线索。 用户提供的引用[2]提到了java.lang.NoSuchMethodError,这可能与依赖版本冲突有关。引用[4]指出当使用高版本的selenium-java时,会出现类型转换错误,降低到3.2.0解决了问题。这说明版本兼容性确实是一个常见问题。此外,引用[5]提到使用的Appium版本是1.18.3,而用户现在使用的是8.5.1,版本跨度较大,可能涉及API的变化。 接下来,我需要分析IllegalAccessError的可能原因。这个错误通常发生在编译时存在某个类的方法或字段,但在运行时由于访问权限变化(如从public变为private)而无法访问。在这里,错误提示涉及到AppiumClientConfig和selenium的ClientConfig不兼容,可能是由于Appium Java客户端库和Selenium的版本不匹配导致的。 根据Appium Java Client的官方文档,不同版本的Appium客户端需要特定版本的Selenium依赖。例如,Appium 8.x可能要求Selenium 4.x版本。用户可能在使用Appium 8.5.1时,Selenium的版本过低或过高,导致类结构不一致,从而引发IllegalAccessError。 用户之前提到在引用[4]中通过降低selenium-java版本解决了问题,但这里可能需要升级到与Appium 8.5.1兼容的版本。例如,检查Appium Java Client 8.5.1的官方文档,确认其所需的Selenium版本是否为4.8.0或更高,或者是否需要特定的补丁版本。 此外,依赖管理工具如Maven或Gradle可能存在依赖冲突,需要排除旧版本的Selenium库,确保所有相关依赖都使用兼容版本。例如,确保io.appium.java_client和org.seleniumhq.selenium的版本相互匹配。 解决方案可能包括以下步骤: 1. 确认并更新Selenium版本至与Appium 8.5.1兼容的版本,如4.8.0或更高。 2. 清理Maven/Gradle的本地仓库,避免旧版本残留。 3. 检查依赖树,排除冲突的依赖项。 4. 更新Appium服务器至与客户端库匹配的版本。 还需要考虑用户是否在项目中混合使用了不同来源的依赖,例如同时引入了Appium和Selenium的不同模块版本,导致部分类文件不一致。例如,某些模块可能依赖旧版Selenium,而其他模块需要新版,从而引发冲突。 最后,建议用户参考官方文档或社区资源,确认版本兼容性矩阵,并逐步调整依赖版本,进行测试验证。</think>### Appium 8.5.1 中 `java.lang.IllegalAccessError` 的解决方案 #### 问题分析 `java.lang.IllegalAccessError` 通常由以下原因导致: 1. **依赖版本冲突**:Appium Java Client 与 Selenium 的版本不兼容,导致类或方法访问权限不一致。 2. **API 变更**:Appium 8.x 对 Selenium 的依赖要求可能发生变化,旧版本 Selenium 的类结构与新版本 Appium 客户端不匹配[^4][^5]。 3. **残留依赖**:Maven/Gradle 本地仓库中可能存在旧版本的依赖文件。 --- #### 逐步解决方案 1. **检查依赖版本兼容性** - **Appium Java Client 8.5.1** 要求 **Selenium 4.8.0 或更高版本**(参考官方兼容性文档)。 - 在 `pom.xml` 中更新依赖: ```xml <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.8.0</version> <!-- 最低要求 4.8.0 --> </dependency> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>8.5.1</version> </dependency> ``` 2. **清理本地仓库缓存** - **Maven**:删除 `~/.m2/repository/org/seleniumhq` 和 `~/.m2/repository/io/appium`。 - **Gradle**:运行 `gradle clean build --refresh-dependencies`。 3. **排除冲突依赖** 若项目中存在其他依赖引入旧版本 Selenium,需显式排除: ```xml <dependency> <groupId>其他依赖组</groupId> <artifactId>其他依赖项</artifactId> <exclusions> <exclusion> <groupId>org.seleniumhq.selenium</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> ``` 4. **验证 Appium 服务器版本** - Appium 服务器建议使用 **2.x 版本**(与 Java Client 8.x 兼容): ```bash npm install -g appium@next ``` --- #### 验证步骤 1. 编写最小化测试脚本: ```java import io.appium.java_client.AppiumClientConfig; import io.appium.java_client.AppiumDriver; import org.openqa.selenium.remote.http.ClientConfig; public class Test { public static void main(String[] args) { ClientConfig config = ClientConfig.defaultConfig(); AppiumClientConfig appiumConfig = AppiumClientConfig.fromClientConfig(config); System.out.println("配置兼容性验证成功"); } } ``` 2. 若未抛出 `IllegalAccessError`,则依赖冲突已解决。 --- #### 附加建议 - 使用 **Java 11 或更高版本**,避免因 JDK 版本过低导致兼容性问题[^5]。 - 在混合开发(Android + iOS)场景中,确保所有设备描述符(如 `automationName`)与 Appium 版本匹配[^3]。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值