关于时间控制,我想通常最常见到的就是thread.sleep()方法了。不过这样有很多弊端和风险,为了能合理规避风险以及让代码易于维护,在此总结几种常用方法:
1. 隐性等待:(配合BeforeMethod使用,相当于配置在测试中的参数)
@BeforeMethod
public void beforeMethod() {
driver= new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS );
driver.manage().window().maximize();
}
2. 基于元素显示的显性等待:(简单以Xpath为例)
public void waitElementToPresent(WebDriver driver, String xpath)
{
for (int second = 1000;; second++)
{
sleep(second);
if (second >= 10000)
System.out.println("timeout : " + xpath);
try
{
if (driver.findElement(By.xpath(xpath))
.isDisplayed())
break;
} catch (Exception e)
{
System.out.println("Exception e");
}
}
}
另外,显示等待也可以配合元素是否显示的判断方法使用
public boolean isElementPresent(By xpath, WebDriver driver) {
// TODO Auto-generated method stub
try {
driver.findElement(xpath);
return true;
}
catch (NoSuchElementException e) {
return false;
}
}
下面,简单用一个例子来应用几种等待和时间控制的方法:
场景A:登陆系统,进入上传文件页面,点击upload上传文件,等待直到上传完成后,退出系统。
//登陆系统
Login(driver);
//进入upload页面
driver.findElement(By.xpath("//*[td='3']")).click();
driver.findElement(By.xpath("//*[@id='btnOrgnizations']/dl/dt")).click();
driver.findElement(By.xpath("//*[td='org-1']")).click();
sleep(2000);
driver.findElement(By.xpath("//*[@class='btnToolbar buttonWithMenu']")).click();
//用JSExecutor点击uploadbutton,因为是隐藏元素,所以直接用JS脚本了
JavascriptExecutor js = (JavascriptExecutor) driver;
String myjs="document.getElementById('ctl00_c_tmmImportationCataloguesList_tmmNewMenu|1').click();";
js.executeScript(myjs);
//切换到上传文件的iframe里面,等待直到上传文件的button显示
driver.switchTo().frame("IFrameNewImportFile");
waitElementToPresent(driver,"//*[@id='ImportationCatalogueNewImportFileControl1_tmmFileXml']");
//上传特定路径的xml文件,并点击uploadbutton
driver.findElement(By.xpath("//*[@id='ImportationCatalogueNewImportFileControl1_tmmFileXml']")).sendKeys("E:\\JAVA testing\\_Testfiles\\Test.xml");
sleep(2000);
driver.findElement(By.xpath("//*[span='Import']")).click();
//直到上传完成,退出系统
for(int second=3000;;second++)
{
if (second >= 4000)
System.out.println("timeout : " + second);
else
{
driver.switchTo().defaultContent();
driver.switchTo().frame("IFrameImportationProgress");
sleep(second);
if (driver.findElement(By.xpath("//*[@class='progressBarArea']/span")).isDisplayed())
{
System.out.println(second+":"+"Under importing now");
continue;
}
else
{
driver.switchTo().defaultContent();
break;
}
Logout(driver);
}
分享到:
相关推荐
在IT行业中,自动化测试是确保软件质量的重要环节,而`phpunit`和`selenium`是两种广泛使用的自动化测试工具。`phpunit`是PHP语言的单元测试框架,它允许开发者编写测试用例来验证代码的功能。`selenium`则是一个跨...
综上所述,在编写Selenium自动化测试脚本时,推荐使用显式等待来处理动态元素加载问题,这样能够更准确地控制等待条件和时间,从而提高测试的准确性和效率。隐式等待适用于处理那些总是会在某个时间范围内加载完成的...
### Selenium深入浅出1.0 知识点详解 #### Selenium概述 Selenium是一个强大的自动化测试框架,主要用于Web应用的功能性测试。它支持多种编程语言(如Java、Python、C#等),并且能够运行在不同的操作系统上。...
### Selenium深入浅出知识点概述 #### 一、Selenium简介及功能特点 - **定义**:Selenium 是一套完整的 Web 测试解决方案,包含了多种工具来满足各种自动化测试需求。 - **功能特点**: - **脚本录制与回放**:...
selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium
### Selenium 深入浅出知识点解析 #### 一、Selenium—Web界面测试工具概述 Selenium 是一款流行的开源工具,主要用于Web应用的自动化测试。它可以模拟真实用户的行为,从而帮助开发者验证Web应用程序的功能是否...
### Selenium 知识点详解 #### 一、Selenium 概述 Selenium 是一个用于自动化 Web 应用程序测试的...通过本文的介绍,希望能够帮助大家更好地理解 Selenium 的基本原理及使用方法,进一步提升软件测试的质量和效率。
Selenium Server 主要用于处理浏览器的远程控制和代理功能,而 Selenium IDE 则是一个浏览器插件,用于录制和回放测试用例。 在 `selenium-selenium-4.5.0.zip` 源码中,我们可以深入理解 Selenium 的内部实现,...
Selenium 等待机制详解 Selenium 等待机制是 Selenium 自动化测试中一个非常重要的概念,它可以帮助我们在自动化测试中更好地处理页面加载和元素的出现问题。在 Selenium 中,有两种等待机制:显式等待(Explicit ...
如果在整个等待时间内元素仍未出现,Selenium会继续执行后续操作。这种方式的好处在于,一旦页面元素加载完成,即便整个页面还未完全加载,脚本也能继续执行。然而,它可能过于保守,因为即使部分元素已经加载,如果...
本文将详细介绍这三种等待方式的工作原理及应用场景,并通过示例代码帮助读者理解如何正确应用它们。 #### 二、强制等待(Sleep) **定义:** 强制等待是最简单直接的等待方式,它通过`time.sleep()`函数让脚本...
selenium selenium selenium
1. **显式等待(Explicit Wait)**:这是一种程序控制的等待,设置一个最长等待时间,直到特定条件满足或达到最大等待时间。显式等待是基于WebDriverWait对象实现的,可以精确地等待某个元素出现、消失或可点击。 2...
除了基本操作,Selenium Java还支持断言、等待、截图等功能,以确保测试的完整性和准确性。 3. **selenium-server-standalone-2.42.2.jar**:这个文件是Selenium服务器的独立版本,包含了WebDriver服务器和其他...
**Selenium WebDriver** 是Selenium项目的核心,它提供了一个跨平台的API,可以直接控制浏览器执行自动化任务。WebDriver与浏览器之间通过JSON Wire Protocol进行通信,确保在不同操作系统和浏览器上的兼容性。 **...
Selenium 是一个强大的开源Web功能测试工具集合,由ThoughtWorks公司开发。它的核心基于JavaScript,通过JavaScript单元测试工具JSUnit,模拟真实的用户交互,如页面浏览、点击链接、填写表单、触发事件等,同时能对...
除了核心的测试功能,Selenium_v2.5可能还集成了其他工具和库,例如Selenium Grid,它允许分布式执行测试,可以在多台机器上并行运行测试,大大缩短整体测试时间,尤其适合大型项目或需要频繁回归测试的场景。...
Selenium-java包含了各种元素定位策略、等待机制、页面对象模型等功能,使得编写测试代码更为便捷。虽然在某些简单的情况下,不使用Selenium-java也能运行测试(通过直接调用selenium-server-standalone.jar提供的...
Selenium安装配置及使用 Selenium 是一个自动化测试工具,允许开发者使用多种编程语言编写自动化测试案例。本文档将详细介绍 Selenium 的安装和配置过程,包括 Selenium-IDE、Selenium-RC 和 Selenium-Grid 的安装...