界面上有些元素是要先等它出现,再等它消失,譬如loading icon 这个是等多个loading icon出现后消失 /** * Wait for loading icon disappear in dialog and Widgets * @author jz */ public void waitForLoadingIconDisappearInDialog(WebDriver driver) { System.out.println("Wait for loading icons dis…
等待元素出现之后再消失,界面上的loading icon都属于这种类型,之前的方法总是卡死,换这种方法目前还好用的 /** * Check if the element present with customized timeout * @param driver * @param locator * @param errorMessage * @return */ public Boolean waitUntilElementPresent(WebDriver driver,final By…
在自动化测试中,很多时候都会有等待页面某个元素出现后能进行下一步操作,或者列表中显示加载,直到加载完成后才进行下一步操作,但时间都不确定,如下图所示 幸运的是,在selenium 2后有一个模块expected_conditions,里面有很多函数可以完成这个工作,相关博客可见 http://www.cnblogs.com/nbkhic/p/4885041.html 但在selenium 1中或自己仅仅想写个简单用法该怎么处理那?解决如下: from selenium.common.except…
在实际使用中,有时会出现一个元素还没有加载出来,导致无法获取,此时需要selenium处理来等待一段时间,此时处理方法有以下几种: 1.最笨.最简单但是最不推荐的方式: Thread.sleep(times); 2.采用 WebDriverWait类+ExpectedConditions接口,具体用法例子: WebDriverWait wait = new WebDriverWait(driver,10);         WebElement e1 = wait.until(ExpectedC…
/**显示等待并返回元素 * @param driver * @param locator */ public static WebElement showWait(WebDriver driver, final String locator) { return new WebDriverWait(driver, 10).until(new ExpectedCondition<WebElement>() { public WebElement apply(WebDriver d) { retu…
等待时做什么,为什么使用等待 在做自动化测试,设计测试用例的时候,有时下一步的操作会依赖上一步的结果或者内容,上一步操作成功之后才能进行下一步操作等,这时候,我们就需要使用等待,来判断上一步操作是否完成,什么时候可以进行下一步操作. 1.强制等待 sleep(),单位是秒使用方法:sleep(X),等待X秒后,进行下一步操作.无论条件成立与否,都要等待到时间截至,才能进行下一步操作缺点:不能准确把握需要等待的时间(有时操作还未完成,等待就结束了,导致报错:有时操作已经完成了,但等待时间还没有到,…
--为什么要设置元素等待: 目前大多数web应用程序都是使用AJAX和JavaScript开发,每次加载一个网页,包括静态网页和动态网页,也就是加载各种HTML标签和JS文件.在网页中进行元素定位时,有可能打开了网页但是元素未加载出来,这时进行元素定位可能会出现错误.所以,设置元素等待(等待元素加载完成再去定位)是非常有必要的. (1)隐式等待(相当于全局变量) 隐式等待会告诉webdriver等待一段时间后查找元素.默认等待时间为0,一旦设置了隐式等待,它会对整个webdriver周期起作用.…
Python爬虫之设置selenium webdriver等待 ajax技术出现使异步加载方式呈现数据的网站越来越多,当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成,这给定位元素的定位增加了困难. 如果因为在加载某个元素时延迟而造成ElementNotVisibleException(不可见元素异常)的情况出现,那么就会降低自动化脚本的稳定性,设置元素等待可改善这种问题造成的不稳定. 一.强制等待 强制等待是利用python语言自带的time库中的sleep()方法: from se…
# 4. 等待操作 # 强制等待from time import sleepsleep(10) # 隐性等待# 设置最长等待时间,在这个时间在只要有个时间点加载完成,则执行下一步代码,比sleep智能,能够自主判断# 整个driver的会话周期内,设置一次即可,driver.implicitly_wait(10) # 显性等待# 使用WebDriverWait类 和 excepted_conditions模块# 明确某个条件满足之后,再去执行下一步操作# 程序每隔XX秒看一眼,如果条件成立了,则…
在用自动化测试工具selenium完成下载任务时,经常会遇到定位不到元素的情况,总结如下: 1.frame/iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而selenium每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位. 解决方案: 如果iframe有name或id的话,直接使用switch_to_frame("name值")或switch_to_frame("id…