selenium+Java中时间等待的几种方式

本文介绍使用Selenium WebDriver进行显示等待和隐式等待的技巧,通过实例演示如何在网页加载过程中灵活地等待特定元素出现,提高自动化测试的效率和稳定性。

public class Demo14 {

public static void main(String[] args) {

	FirefoxDriver driver = new FirefoxDriver();
	
	driver.get("http://www.baidu.com/");
	
	//显示等待,规定时间内,看元素出现没,如果元素没有出现,就一直等,除非规定时间还没有出现,则抛出异常
	WebDriverWait wait = new WebDriverWait(driver,5);
	wait.until(ExpectedConditions.presenceOfElementLocated(By.id("lg")));
	
	/*
	//隐式等待,看等待时间到了没,设置的时间为10秒,如果10秒之内,特定元素没有加载完成,则抛出异常,
	//如果小于10秒之内特定元素加载完成,剩下的时间将不再等待。   
	driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
	*/
	
	//固定等待2秒
	try {
		Thread.sleep(2000);
	} catch (InterruptedException e) {
		e.printStackTrace();
	}
	driver.close();
}

}

下图是截取某个视频上的,将方法封装起来,使得使用更加灵活。封装的方法,在规定时间内找到元素,返回布尔类型为true;如果没有找到元素,抛出异常。
在这里插入图片描述

### 如何使用 SeleniumJava 进行 Web 自动化测试 #### 创建 Maven 工程并添加依赖项 为了在 Java 中使用 Selenium,首先需要创建一个 Maven 项目,并向 `pom.xml` 文件中添加必要的依赖项。这可以通过编辑 `.xml` 文件中的 `<dependencies>` 部分来完成: ```xml <dependencies> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.59</version> </dependency> </dependencies> ``` 此部分定义了项目的外部库需求,确保可以访问 Selenium 的 API 功能[^1]。 #### 设置 WebDriver 浏览器驱动程序 对于 Chrome 浏览器而言,在执行自动化脚本前需下载对应的 ChromeDriver 并设置其路径环境变量或直接指定位置加载它。安装完成后可通过如下方式初始化 WebDriver 实例: ```java System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver"); WebDriver driver = new ChromeDriver(); ``` 这段代码设置了系统的属性以指向本地存储的 ChromeDriver 可执行文件的位置,并实例化了一个新的 Chrome 浏览器会话。 #### 编写基本的操作命令 一旦有了 WebDriver 对象之后就可以调用各种方法来进行网页交互动作,比如点击按钮、输入文本等。下面是一些常用的 WebElement 方法示例: - **Click**: 执行单击操作。 ```java driver.findElement(By.id("submit")).click(); // 假设有一个 id="submit" 的提交按钮 ``` - **Send Keys**: 向表单字段发送字符串数据 ```java driver.findElement(By.name("username")).sendKeys("testUser"); // 输入用户名 ``` 这些基础函数允许模拟用户的实际行为从而控制网站上的组件[^2]。 #### 断言机制的应用 当构建测试案例时,往往还需要确认某些条件是否满足预期结果。为此可借助于内置的支持类如 Assertions 来做验证工作: ```java import static org.openqa.selenium.support.ui.ExpectedConditions.*; // ... Assert.assertTrue(isElementPresent(By.linkText("Logout"))); // 检查登出链接是否存在 ``` 上述片段展示了如何运用显式的等待以及断言语句去检验特定元素的存在状态,以此保证页面逻辑按计划运行[^3]。 #### 结合 JUnit 构建完整的测试套件 JUnit 是一种流行的 Java 单元测试框架,也可以用来辅助编写集成度更高的端到端 UI 层面的功能性测试。通过继承 TestCase 或者标注 @Test 注解的方式定义独立的小型测试单元;而整个流程则由 TestRunner 负责协调调度各个子模块之间的顺序关系[^4]。 综上所述,基于以上几个方面即可搭建起一套较为完善的 Selenium + Java 自动化测试体系结构,能够有效地支持持续交付过程中频繁变更下的质量保障活动[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值