从0开始学测试自动化:java+selenium3 UI自动化(2) - 启动Firefox

1. selenium和浏览器

基于selenium的这套自动化体系,其实现关键就在于对于各浏览器的顺畅操作。

事实上当selenium刚开始起家的时候,他使用的还是javascript注入的方式来驱动浏览器操作;而彼时Firefox还是浏览器市场上的王者,他也是selenium最早开始支持的浏览器。

selenium3时代一个很明显的改动在于,现在启动Firefox,你需要一个驱动了:也就是geckodriver。

2. 工具准备

接下来准备好浏览器以及相关工具:

  • Firefox客户端:本文使用版本firefox52 32位
  • geckodriver:本文使用版本geckodriver v0.24.0
  • selenium类库:本文使用版本selenium-server-standalone-3.141.59

3. 代码实现

在新建的项目上右键,选择新建一个class,并勾选public static void main,写入以下代码:

package seleniumTest;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class test {

	public static void main(String[] args) {
		//通过配置系统变量指定火狐客户端位置
		System.setProperty("webdriver.firefox.bin", "D:/Firefox52_32/firefox.exe");
		
		//通过配置系统变量指定geckodriver位置
		System.setProperty("webdriver.gecko.driver", "D://geckodriver.exe");
		
		//实例化一个FirefoxDriver
		WebDriver driver = new FirefoxDriver();
		
		//最大化窗口
		driver.manage().window().maximize();
		
		//设置隐式等待为10秒
		driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
		
		//浏览到百度网站
		driver.get("http://www.baidu.com");
		
		//控制台打印页面标题
		System.out.println(driver.getTitle());
		
		//浏览器关闭
		driver.quit();
	}

}

运行代码,一切顺利的话应该看到如下结果:
在这里插入图片描述

4. 补充问题

实际上启动浏览器这部分代码可以说是非常简单的,但是也经常容易遇到问题。

例如:

  • org.openqa.selenium.WebDriverException: connection refused
  • org.openqa.selenium.SessionNotCreatedException: Unable to find a matching set of capabilities
  • 又或者网页可以打开,却无法执行任何操作

等等诸如此类的错误,基本上都是由于selenium、浏览器driver和浏览器客户端三者的支持关系造成的。

要避免以上问题,需要做下面几件事情:

4.1 确定所测浏览器版本

应项目需求,选定特定的浏览器版本。比如本文使用的是firefox52 32位版本。
一经确定,关闭浏览器自动更新。因为正如前文所说,浏览器和selenium等存在对应关系,一旦浏览器自动更新,可能导致selenium类库和driver无法支持的问题。

有的人可能会觉得我的项目需要跟上浏览器更新的步骤,但你不需要在UI自动化里强行去验证这一点,否则你会丧失自动化的稳定性,增加配置和调试工作量。你可以选择在合适的时间点更新浏览器、selenium和driver,但这些应该是可控的,而不是让浏览器去自动更新导致你的工作混乱。
火狐的历史版本可以在这里找到:http://ftp.mozilla.org/pub/firefox/releases/

由于我们使用固定版本的浏览器,那么顺带也推荐从固定位置启动,即代码中的“通过配置系统变量指定火狐客户端位置”相关语句。

4.2 找到对应的selenium和geckodriver版本

selenium和geckodriver支持特定的浏览器版本,这里是一个向下兼容的概念。也就是说越新的selenium类库和geckodriver可以支持越新的浏览器,同时兼容旧版本浏览器。
因此在确定了你要使用的浏览器版本,接下来找到相应确定支持该浏览器的selenium和geckodriver即可。
如果你用的是比较新的浏览器版本,那么最好也找到最新的selenium和驱动。
本文使用的是:

  • selenium-server-standalone-3.141.59
  • geckodriver v0.24.0

最后,浏览器和geckodriver都有32位和64位之分,注意一下这个问题。

下一篇来解析firefox浏览器的带profile启动。


软件测试交流群:717380210
有软件测试,自动化测试,安全测试相关问题需要交流探讨的小伙伴,欢迎加入!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于JavaSelenium的Web UI自动化测试框架是一种自动化测试工具,可以用于测试Web界面的功能和用户交互。以下是该框架的一些关键特性和优势。 1. 支持多浏览器和平台:这个框架可以在各种主流浏览器(如Chrome、Firefox、Safari等)和操作系统(如Windows、Mac、Linux等)上运行,确保网站在不同环境下的兼容性。 2. 灵活的对象识别:通过使用Selenium的定位策略(如ID、CSS选择器、XPath等),该框架可以准确地识别页面上的元素,从而使测试用例的编写更加简单和可靠。 3. 数据驱动测试:该框架支持数据驱动测试,可以从外部源(例如Excel、CSV等)中加载测试数据,并对每个数据组合执行相同的测试用例,从而提高测试效率和可重复性。 4. 测试报告和日志:这个框架提供了详细的测试报告和日志记录功能。测试报告会提供关键的测试执行结果,如成功率、失败率和跳过率,并展示每个用例的执行状态。日志记录则可以帮助开发人员在调试期间查找问题和进行错误分析。 5. 高可扩展性:该框架可以根据项目需要进行定制和扩展。开发人员可以编写自定义函数和库,以便进行特定的测试操作和验证。 总之,基于JavaSelenium的Web UI自动化测试框架提供了一种可靠、高效和可扩展的方式来测试Web界面。它可以帮助团队快速检测和修复潜在的缺陷,提高软件质量和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值