首页 Selenium中的几种等待方式_dangliuzi

Selenium中的几种等待方式_dangliuzi

举报
开通vip

Selenium中的几种等待方式_dangliuziSelenium中的几种等待方式_dangliuziSelenium中的几种等待方式创建取消最近在项目过程中使用selenium判断元素是否存在的时候遇到一个很坑爹的问题,用以下方法执行的时候每次都会等待很长一段时间,原因是因为对selenium实现方法了解不足导致一直找不到解决方法。privatebooleanisElementPresent(Byby){try{driver.findElement(by);returntrue;}catch(NoSuchElementExceptione){returnfals...

Selenium中的几种等待方式_dangliuzi
Selenium中的几种等待方式_dangliuziSelenium中的几种等待方式创建取消最近在项目过程中使用selenium判断元素是否存在的时候遇到一个很坑爹的问题,用以下方法执行的时候每次都会等待很长一段时间,原因是因为对selenium实现方法了解不足导致一直找不到解决方法。privatebooleanisElementPresent(Byby){try{driver.findElement(by);returntrue;}catch(NoSuchElementExceptione){returnfalse;}}不明所以,经过追踪源码才发现启动Driver的时候使用driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);此处设置的等待时间是针对全局设置的,webdriver中执行所有命令的超时时间都设置为30秒了,如上面的findElement方法,找不到元素会默认等待三十秒。有些时候只需简单判断元素是否存在,立马执行,而此处的设置导致脚本执行缓慢。将Selenium中的等待时间贴出来给大家张张经验。Selenium的延迟等待分为显式等待(ExplicitWait)&隐式等待(ImplicitWait).1.显式等待显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出Exception.如:1newWebDriverWait(driver,15).until(2ExpectedConditions.presenceOfElementLocated(By.cssSelector("csslocator"))3);这里,15是要等待的秒数.如果没有满足until()方法中的条件,就会始终在这里wait15秒,依然找不到,就抛出异常.也可以这样写:01WebDriverdriver=newFirefoxDriver();02driver.get(www.baidu.com);03WebElemente=(newWebDriverWait(driver,10)).until(04newExpectedCondition(){05@Override06publicWebElementapply(WebDriverd){07returnd.findElement(By.id("idlocator"));08}09}10);这样就通过回调函数,直接获得了这个WebElement.也就是页面元素.如果只是仅仅想判断页面是不是加载到某个地方了,就可以用第一种方法;但如果需要得到某个WebElement,两种方式都可以,只是第一种方式还需要再多一步获取的操作.1Waitw=newWait(){2@Override3publicbooleanuntil(){4returnwebElement.isDisplayed();5}6};另外这种等待的方式,在加载js代码的时候做判断会比较方便,反正我只在代码里这么见过,但是没用过,有兴趣的朋友可以研究一下.2.隐式等待1driver.manage().timeouts().implicitlyWait(second,TimeUnit.SECONDS);隐式等待,此处的隐式等待是针对Driver每次执行命令的最长执行时间也可以理解为超时时间,一些人对此处有误解,认为是让Driver等一段时间,确实某些时候能让Driver等一段时间,但是影响是全局的,每次Driver执行找不到元素都会等待此处设置的时间,假设某处将此值设置的太长,必须在执行完成之后还原回来,否则判断一个元素是否存在的时候,就会遇到很坑爹的问题。改进后的方法如下:WebDriver会进行一个隐式等待,但参数只有时间,这就导致我需要什么元素出现,我不一定能等到它,privatebooleanisElementPresent(Byby){try{driver.manage().timeouts().implicitlyWait(1,TimeUnit.SECONDS);driver.findElement(by);returntrue;}catch(NoSuchElementExceptione){returnfalse;}}得不到某个元素,我们就延迟一下...3.线程休眠1Thread.sleep()
本文档为【Selenium中的几种等待方式_dangliuzi】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_721103
暂无简介~
格式:doc
大小:30KB
软件:Word
页数:0
分类:
上传时间:2021-09-07
浏览量:4