Java+Selenium——Timeout接口相关方法介绍

Timeout接口

跳转到Timeout接口描述文字部分,下面有三个常见的接口。

implicitlyWait(long time, TimeUnit unit);

setScriptTimeout(long time, TimeUnit unit);

pageLoadTimeout(long time, TimeUnit unit);

先看看implicitlyWait(),这个在前面介绍过了,叫隐式时间等待。我们来看看这个接口的描述部分,大致意思是:隐式时间等待是在查找元素的时候,设置一个最大时间值,如果driver第一次没有找到网页元素,那么就继续找,直到消耗了设置的最大时间值,还是没有找到,那么就抛出没有找到元素的异常。如果在设置时间范围内就找到了该元素,那么就执行下一行代码,不需要再等时间,这就是隐式等待的含义。所以,隐式时间等待一般结合查找网页元素一起。

setScriptTimeout(),作用是,在设置规定的时间内,等待异步脚本的执行结束,而不是里面抛出错误。这个在执行javascript脚本的时候可能会使用,后面我们介绍了使用Javascript脚本执行Selenium相关操作后在介绍具体使用方法。

pageLoadTimeout(),字面意思就网页加载超时,作用就是在设置规定时间内,等待网页完整加载完成,而不是里面抛出错误。我们知道如果网速慢,或者网页元素太多,例如网页做了大面积渲染,肯定会造成网页加载速度变慢。这个接口的作用就是,来处理这类问题的。从这个角度来看,我们前面的脚本中设置时间等待的语句应该换成这个语句更合适一些,毕竟我们的目的就是等待网页加载完成。

这里用pageLoadTimeout()举例一个打开百度和打开国外站点的例子,百度首页打开设置2秒,国外站点(icloud.com)打开设置1秒,由于中国大陆访问国外网站速度肯定慢,所以会报超时错误。

=============================================================================================================

 timeout接口有以下三种常用的接口。

implicitlyWait():隐式时间等待是在查找元素的时候,设置一个最大时间值,如果driver第一次没有找到网页元素,那么就继续找,直到消耗了设置的最大时间值,还是没有找到,那么就抛出没有找到元素的异常。如果在设置时间范围内就找到了该元素,那么就执行下一行代码,不需要再等时间,这就是隐式等待的含义。所以,隐式时间等待一般结合查找网页元素一起。

setScriptTimeout(),作用是,在设置规定的时间内,等待异步脚本的执行结束,而不是里面抛出错误。这个在执行javascript脚本的时候可能会使用。

pageLoadTimeout(),字面意思就网页加载超时,作用就是在设置规定时间内,等待网页完整加载完成,而不是里面抛出错误。我们知道如果网速慢,或者网页元素太多,例如网页做了大面积渲染,肯定会造成网页加载速度变慢。这个接口的作用就是,来处理这类问题的。

注意使用timeouts()接口时不要忘记导入接口包:

import java.util.concurrent.TimeUnit;

=============================================================================================================================

TimeUnit.DAYS          //天
TimeUnit.HOURS         //小时
TimeUnit.MINUTES       //分钟
TimeUnit.SECONDS       //秒
TimeUnit.MILLISECONDS  //毫秒

================================================================================================================================

相关脚本代码如下:

package lessons;

import java.util.concurrent.TimeUnit;

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

public class PageLoadTest {

public static void main(String[] args) {

        System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe");
        //System.setProperty("webdriver.gecko.driver", ".\\Tools\\geckodriver.exe");

        WebDriver driver = new ChromeDriver();
        //WebDriver driver = new FirefoxDriver();

        driver.manage().window().maximize();

        driver.manage().timeouts().pageLoadTimeout(10,TimeUnit.SECONDS);
        driver.get("https://www.icloud.com/");

    }

}
package lessons;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class FindElements {

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");  

        WebDriver driver = new ChromeDriver();  

        driver.manage().window().maximize();  

        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

        driver.get("https://news.baidu.com");  

        driver.findElement(By.id("kw")).sendKeys("Selenium");

        driver.findElement(By.id("su")).click();

    }

}

原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12219310.html

时间: 2024-08-03 00:28:01

Java+Selenium——Timeout接口相关方法介绍的相关文章

Java + selenium Timeout接口用法介绍

上一篇介绍了关于如何启动浏览器的方法.这篇文章要介绍一下,上一篇代码中关于等待时间的接口方法,代码如下: driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS); 在调用timeouts()接口之前,我们调用了manage()接口,这个接口下的操作都是用来控制浏览器本身的. timeout接口有以下三种常用的接口. implicitlyWait():隐式时间等待是在查找元素的时候,设置一个最大时间值,如果driver第一次没

Java + selenium window()接口方法介绍

在浏览器启动的代码中,有一段关于window接口的调用,这篇文章就是来解释介绍这个接口的.代码如下 driver.manage().window().maxmize(); window接口主要是用来控制浏览器窗口的设置.例如大小.最大.最小.全屏.位置等等. void setSize(Dimension targetSize):自定义一个窗口的大小.注意targetSize是一个类,所以我们要提前设置好. Dimension getSize():获取窗口的大小. 代码举例如下 Dimension

java----数据结构与算法----JavaAPI:java.util.Collection接口

Java API--java.util.Collection接口 /** * @author chen * @date 20170317 * @description:本程序讲述Collection接口 * java.util.Collection * 概述:Collection接口是Set和List接口的父接口,Collection接口中定义了一些 * 用于集合元素操作的方法,被其子接口以及子接口的实现类所继承 * 构造函数 * java中接口不能有构造函数 * 成员函数: * [1]概述,由

Java 代码优化过程的实例介绍

衡量程序的标准 衡量一个程序是否优质,可以从多个角度进行分析.其中,最常见的衡量标准是程序的时间复杂度.空间复杂度,以及代码的可读性.可扩展性.针对程序的时间复杂度和空间复杂度,想要优化程序代码,需要对数据结构与算法有深入的理解,并且熟悉计算机系统的基本概念和原理:而针对代码的可读性和可扩展性,想要优化程序代码,需要深入理解软件架构设计,熟知并会应用合适的设计模式. 首先,如今计算机系统的存储空间已经足够大了,达到了 TB 级别,因此相比于空间复杂度,时间复杂度是程序员首要考虑的因素.为了追求高

Java容器Map接口

Map接口容器存放的是key-value对,由于Map是按key索引的,因此 key 是不可重复的,但 value 允许重复. 下面简单介绍一下Map接口的实现,包括HashMap,LinkedHashMap,WeakHashMap,Hashtable,IdentityHashMap和TreeMap.需要注意的是,Map接口并没有继承Collection接口! 1.HashMap HashMap 继承于AbstractMap,实现了Cloneable.java.io.Serializable接口

Java语言Socket接口用法详解

Socket接口用法详解   在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Server,并通过accept()方法随时监听客户端的连接请求. 扩展: ServerSocket中常用的构造函数及方法 构造函数:ServerSocket(int port) 这是一个构造方法,用于在当前的服务器默认的IP地址上监听一个指定的端口,即在指定的IP和端口创建一个ServerSocket对象

native关键字初识--java调用非java代码的接口

Java基础知识--JNI入门介绍(上) Java? 本机接口(Java Native Interface,JNI)是一个标准的 Java API,它支持将 Java 代码与使用其他编程语言编写的代码相集成.如果您希望利用已有的代码资源,那么可以使用 JNI 作为您工具包中的关键组件 -- 比如在面向服务架构(SOA)和基于云的系统中.但是,如果在使用时未注意某些事项,则 JNI 会迅速导致应用程序性能低下且不稳定. JNI 的发展JNI 自从 JDK 1.1 发行版以来一直是 Java 平台的

表格存储新手指南:Java SDK异步接口的使用

原文地址 本篇文章主要会介绍下表格存储的Java SDK提供的异步接口,如何使用以及应用场景. 为什么需要异步? 异步提供了一个non-blocking, event-driven的编程模型,能够将系统不同层级的模块进行层次化的解耦,能够利用多核并行执行任务,提高性能. 现如今,一个大型的系统,系统级调优的最关键一步,就是异步化.异步化最常改造的是远程RPC或者数据库访问部分,表格存储作为一个底层数据库产品,需要提供异步接口来适应这个潮流. 在表格存储内部,我们也有一些使用异步来优化系统的例子,

java+selenium的helloworld

在学校上测试课程,接触到自动化管理工具,在加上助教工作需要改作业,所以想着学下selenium这一强大的web自动化工具. 1.lenium官网:http://www.seleniumhq.org/   在此下载selenium的安装包,我下载的是selenium-java-3.8.0.具体的selenium版本号不太清楚,应该是selenium2(也称作selenium webdriver) 2.下载chrome和对应的chromedriver. chrome版本号:62.0.3202.89