java+selenium——timeout接口相关方法介绍

小白龙白龙马      2022-05-12     199

关键词:

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", ".Toolschromedriver.exe");
        //System.setProperty("webdriver.gecko.driver", ".Toolsgeckodriver.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", ".Toolschromedriver.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();
        
    }
 
}

记录java+testng运行selenium---运行代码

涉及的文件有:.medicalBusinessFile.java:实例化excel及xml文件操作对象以及将list变成Map.medicalmanualusinessLoginBusiness.java:通过放射获取元素路径及用例动作的执行(每个对应的test都应该有之相对应的business).medicalmanualhandlesLoginElement.... 查看详情

java+selenium元素定位之byid/name/classname

...素,如果连元素都定位不到,后续什么操作都是扯淡。在selenium中查找元素的接口是findElement接口了。findElement接口支持八种查找网页元素的方法,这篇文章就先介绍比较简单 查看详情

使用 Selenium WebDriver 和 Java 切换选项卡

】使用SeleniumWebDriver和Java切换选项卡【英文标题】:SwitchtabsusingSeleniumWebDriverwithJava【发布时间】:2012-09-2514:34:19【问题描述】:在Java中使用SeleniumWebDriver。我正在尝试自动化一项功能,在该功能中我必须打开一个新选项卡并在... 查看详情

selenium对验证码处理(代码片段)

selenium-验证码处理1.WEB网站为了防止客户机恶意***,加入验证码功能2.selenium处理验证码时常用的方法是通过cooike,对于一般网站验证码识别难度不大,可以使用第三方平台验证码接口,以去哪儿网为例,验证码为图片,我们只要... 查看详情

使用fiddler轻轻松松制造客户端接口timeout的情况

...页面,重新获取请求,获取response信息5.若长时间得不到timeout的效果,右键点击abort(忽略请求),反复几次,就可以得到timeout的效果啦!!! 6.当你想这条请求恢复正常的时候,在下方命 查看详情

java+selenium元素定位之bytagname

    本篇介绍findElement接口中的ByTagName方法。首先,要知道什么是tagname。之前我们使用F12开发者工具查看网页元素是,发现每行代码前都有<input>、<body>、<div>、<button>等等标签,这些标签就是tagname... 查看详情

selenium_等待页面加载完毕

 隐式等待    WebDriverdriver=newFirefoxDriver();driver.get("www.baidu.com");driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);WebElementelement=driver.findElement(By.cssSelector(".abc")) 查看详情

让 Selenium 等待 10 秒

】让Selenium等待10秒【英文标题】:MakeSeleniumwait10seconds【发布时间】:2018-01-0223:59:10【问题描述】:是的,我知道这个问题经常被问到,但我还是不明白。无论如何,我想让Selenium等待。这些方法我都试过了driver.set_page_load_timeout(... 查看详情

如何将常量与 C# 中的接口相关联?

】如何将常量与C#中的接口相关联?【英文标题】:HowtoassociateconstantswithaninterfaceinC#?【发布时间】:2012-09-2623:17:44【问题描述】:某些语言允许您将常量与接口相关联:AJavaexampleAPhPexampleW3C抽象接口也是如此,例如://IntroducedinDO... 查看详情

利用selenium获取api接口数据

#-*-coding:utf-8-*-importjsonfromseleniumimportwebdriverimporttimeimporttracebackif__name__=="__main__":caps='browserName':'chrome','loggingPrefs':'brow 查看详情

selenium-操作元素-等待

1、最直接普通的方式:这个是设置固定的等待时间  Thread.sleep(1000);  2、隐式等待方式(implicitlyWait):设置脚本在查找元素时的最大等待时间;  driver.manage().timeouts().implicitlyWait(second,TimeUnit.SECONDS);   查看详情

让 Selenium 暂停 X 秒

】让Selenium暂停X秒【英文标题】:GettingSeleniumtopauseforXseconds【发布时间】:2013-11-2907:49:44【问题描述】:我想要完成的是浏览一个页面,等待加载某些内容,然后截取并保存屏幕截图。我已有的代码是WebDriverdriver=newFirefoxDriver();d... 查看详情

java模拟实现timeout机制

publicclassTimeOutThreadextendsThread privatelongtimeOut; privatebooleanisCanceled=false; publiclonggetTimeOut() returntimeOut; publicvoidsetTimeOut(longtimeOut) this.timeOut=timeOut; p 查看详情

selenium学习笔记——定位元素

这里介绍的自动化脚本是java编写的,python编写的以后会更新(看学会python的时间O(∩_∩)O~)?(^?^*)先介绍一下自动化测试吧~其实自动化测试是个广泛的概念,一般分为三种:自动化单元测试、自动化接口测试和UI自动化测试。自动... 查看详情

lab02:selenium的安装与使用

1.安装首先点击火狐浏览器右上角选择添加附件:搜索选择安装:完成并启动:2.使用录制与导出功能:  点击文件进行测试用例的输出:3.测试网站内容是否与所给的git地址相一致:首先,将三个java包导入到已经建立好... 查看详情

将 selenium_webdriver(chrome) 的流量绑定到特定的网络接口/隧道

】将selenium_webdriver(chrome)的流量绑定到特定的网络接口/隧道【英文标题】:bindtrafficfromselenium_webdriver(chrome)tospecificnetworkinterface/tunnel【发布时间】:2015-10-2618:12:50【问题描述】:任务是通过特定的网络接口(在linux上)自动化一... 查看详情

selenium-switch与selectapi接口详解

...用WebDriver提供的Api接口就无法处理这些情况了。需要用到Selenium单独提供的模块switch_to模块引用路径#第一种方式可以通过直接导入SwitchTo模块来进行操作fromselenium.webdriver.remote.switch_toimpor 查看详情

python超时处理方法eventlet的eventlet.timeout(代码片段)

...、执行sql的时候,如果遇到以下问题的,都可以用eventlet.timeout这个方法。执行下载数据的接口,数据量较大导致后面接口一直等待;执行sql,sql数据因外界原因导致数据一直加载没查询出来;编写抢票脚本,抢第一个条数据的... 查看详情