selenium测试(Java)-- 隐式等待(十)

隐式等待相当于设置全局的等待,在定位元素时,对所有元素设置超时时间。

隐式等待使得WebDriver在查找一个Element或者Element数组时,每隔一段特定的时间就会轮询一次DOM,如果Element或数组没有马上被发现的话。

默认设置是0。一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起作用。一劳永逸。

 1 package com.test.elementwait;
 2
 3 import java.text.SimpleDateFormat;
 4 import java.util.Calendar;
 5 import java.util.concurrent.TimeUnit;
 6
 7 import org.openqa.selenium.By;
 8 import org.openqa.selenium.NoSuchElementException;
 9 import org.openqa.selenium.WebDriver;
10 import org.openqa.selenium.firefox.FirefoxDriver;
11 import org.openqa.selenium.support.ui.WebDriverWait;
12
13 public class ImplicitWait {
14
15     public static void main(String[] args) {
16         WebDriver driver = new FirefoxDriver();
17         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
18         driver.get("http://www.baidu.com");
19         driver.manage().window().maximize();
20
21         try {
22             SimpleDateFormat format = new SimpleDateFormat("HH-mm-ss-SSS");
23             String time = format.format(Calendar.getInstance().getTime());
24             System.out.println("开始的时间: " + time);
25
26             driver.findElement(By.id("kw22")).sendKeys("selenium");
27
28         } catch (NoSuchElementException e) {
29             System.out.println("没有找到元素");
30             e.printStackTrace();
31         } finally {
32             SimpleDateFormat format2 = new SimpleDateFormat("HH-mm-ss-SSS");
33             String time2 = format2.format(Calendar.getInstance().getTime());
34             System.out.println("结束的时间: " + time2);
35             driver.quit();
36         }
37
38     }
39
40 }

执行结果:

 1 开始的时间: 23-12-26-775
 2 没有找到元素
 3 org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"kw22"}
 4 Command duration or timeout: 10.46 seconds
 5 For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
 6 Build info: version: ‘2.53.0‘, revision: ‘35ae25b‘, time: ‘2016-03-15 16:57:40‘
 7  8 Driver info: org.openqa.selenium.firefox.FirefoxDriver
 9 Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=45.2.0, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
10 Session ID: dda0673c-da3d-4173-a904-d17148a3e26e
11 *** Element info: {Using=id, value=kw22}
12     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
13     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
14     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
15     at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
16     at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
17     at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
18     at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678)
19     at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:363)
20     at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:413)
21     at org.openqa.selenium.By$ById.findElement(By.java:218)
22     at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:355)
23     at com.test.elementwait.ImplicitWait.main(ImplicitWait.java:26)
24 结束的时间: 23-12-37-273
时间: 2024-10-10 00:16:13

selenium测试(Java)-- 隐式等待(十)的相关文章

[selenium webdriver Java]隐式的等待同步

Selenium WebDriver提供了隐式等待来同步测试.当使用了隐式等待执行测试的时候,如果WebDriver没有在DOM中找到元素,将继续等待,超出设定时间后,抛出找不到元素异常 即,当元素没有立即出现的时候,隐式等待将等待一段时间后,再查找DOM.默认时间是0. 一旦设置了隐式等待,它将存在在整个webdriver对象实例的生命周期中,隐式等待会让一个正常响应的应用的测试变慢,会在寻找每个元素时进行等待,这样增加了整个测试执行的时间. 应该避免或减少使用隐式等待 //等待60s dri

(java)selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待

selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待 本例包括窗口最大化,刷新,切换到指定窗口,后退,前进,获取当前窗口url等操作: import java.util.Set;import java.util.concurrent.TimeUnit; import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.openqa.selenium.By;import org.openqa.

基于Selenium2+Java的UI自动化(8)- 显式等待和隐式等待

一.隐式等待 package com.automation.waits; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openq

selenium 的显示等待和隐式等待的区别(记录加强版)

什么是显示等待和隐式等待? 显示等待就是有条件的等待隐式等待就是无条件的等待 隐式等待 当使用了隐式等待执行测试的时候,如果 WebDriver 没有在 DOM 中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常,换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是 0 from selenium import webdriver browser = webdriver.Chrome() browser.implicitly_wait(10

selenium 找不到元素 (显式等待 和隐式等待的区别)

selenium自动化页面元素不存在异常发生的原因有一下几点: (1)页面加载时间过慢,需要查找的元素程序已经完成但是页面还未加载成功.此时可以加载页面等待时间. (2)查到的元素没有在当前的iframe或者frame中.此时需要切换至对应的iframe或者frame中才行. (3)元素错误. 解决页面加载时间所引起的元素找不到,我们可以为页面设置加载时间.时间的设置分为以下三种: (1)显式等待 显示等待是针对于某个特定的元素设置的等待时间,如果在规定的时间范围内,没有找到元素,则会抛出异常,

selenium中的三种等待方式(显示等待WebDriverWait()、隐式等待implicitly()、强制等待sleep())---基于python

我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中(appium通用)常用的等待分为显示等待WebDriverWait().隐式等待implicitly_wait().强制等待sleep()三种,下面我们就分别介绍一下这三种等待的区别 在前面的博文中简单介绍了<强制等待和隐士等待的区别和理解>,本文再详细的结合案例进行理解. sleep(): 强

selenium webdriver 浏览器操作,编码问题,鼠标操作,键盘按键操作,显示和隐式等待

'''size 返回元素的尺寸text 获取元素的文本,测试用例中的断言<a id='cp'>文本信息</a>t_attribute(name) 获取元素属性值is_displayed() 设置该元素是否用户可见''' from selenium import webdriverdriver=webdriver.Firefox()driver.get("https://www.baidu.com") #获取输入框的尺寸size=driver.find_eleme

【java+selenium3】隐式等待+显式等待 (七)

一.隐式等待 -- implicitlyWait 调用方式:driver.manage().timeouts().implicitlyWait(long time, TimeUnit unit); //隐式等待调用方式,5秒+时间单位(枚举类型) driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 注意: 1.隐式等待只能作用于元素的等待. 2.智能等待,如果元素在指定的时间内找到,则不会继续等待,否则在指定时间内未找到

selenium 的隐式等待和显示等待

等待 现在的网页越来越多采用了 Ajax 技术,这样程序便不能确定何时某个元素完全加载出来了.如果实际页面等待时间过长导致某个dom元素还没出来,但是你的代码直接使用了这个WebElement,那么就会抛出NullPointer的异常. 为了避免这种元素定位困难而且会提高产生 ElementNotVisibleException 的概率.所以 Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待. 隐式等待是等待特定的时间,显式等待是指定某一条件直到这个条件成立时继续执行. 1.