Selenium_等待页面加载完毕

隐式等待

     WebDriver driver = new FirefoxDriver();
        driver.get("www.baidu.com");    

        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        WebElement element = driver.findElement(By.cssSelector(".abc"));
        ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);  

注:隐式等待设置的内容在driver的整个生命周期都有效,所以实际使用过程当中有弊端。

  等待20秒元素还不存在,就会抛出异常  org.openqa.selenium.NoSuchElementException

显式等待

显式等待 使用ExpectedConditions类中自带方法, 可以进行显试等待的判断。

显式等待可以自定义等待的条件,用于更加复杂的页面等待条件


等待的条件


WebDriver方法


页面元素是否在页面上可用和可被单击


elementToBeClickable(By locator)


页面元素处于被选中状态


elementToBeSelected(WebElement element)


页面元素在页面中存在


presenceOfElementLocated(By locator)


在页面元素中是否包含特定的文本


textToBePresentInElement(By locator)


页面元素值


textToBePresentInElementValue(By locator, java.lang.String text)


标题 (title)


titleContains(java.lang.String title)

只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑

如果超过设定的最大显式等待时间阈值, 这测试程序会抛出异常。

public static void testWait2(WebDriver driver)
    {
        driver.get("www.baidu.com");    

        WebDriverWait wait = new WebDriverWait(driver, 20);
        wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".abc")));
        WebElement element = driver.findElement(By.cssSelector(".abc"));
        ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);
    }
时间: 2024-11-08 19:49:22

Selenium_等待页面加载完毕的相关文章

一个等待页面加载完毕的loading动画

1 html 部分 <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=ed

页面加载完毕执行多个JS函数

通常我们需要在打开页面时加载脚本,这些脚本必须在页面加载完毕后才可以执行,因为这时候DOM才完整,可以利用window.onload确保这一点,如:window.onload=firstFunction;这脚本的意思是在页面完毕后执行firstFunction函数,但当有很多个函数需要在页面加载时执行呢?可能有人说可以这样:window.onload=firstFunction;window.onload=secondFunction; 但这样的话只会执行secondFunction函数. Si

java selenium (十三) 智能等待页面加载完成

我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作.  否则页面上的元素不存在,会抛出异常. 或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操作 selenium 中提供了非常简单,智能的方法,来判断元素是否存在. 阅读目录 实例要求 实例:set_timeout.html 下面的html 代码,  点击click 按钮5秒后, 页面上会出现一个红色的div快, 我们需要写一段自动化脚本智能的去判断这个div是否存在, 然后把这个div

两种方法实现在HTML页面加载完毕后运行某个js

两种方法实现在HTML页面加载完毕后运行某个js 这篇文章主要介绍了通过两种方法实现在HTML页面加载完毕后运行某个js,需要的朋友可以参考下 js方法: 复制代码 代码如下: <script type="text/javascript"> window.onload=function(){ var userName="xiaoming"; alert(userName); } </script> 以下为jQuery方法,需要引用jQuery

Java Selenium (十二) 操作弹出窗口 &amp; 智能等待页面加载完成 &amp; 处理 Iframe 中的元素

一.操作弹出窗口   原理 在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄, 然后遍历, 使用swithcto.window(newwindow_handle)方法. 就可以定位到新的窗口. 测试页面的HTML <html> <head> <title>常见web ui元素操作, 及API使用</title> <script type

页面加载完毕相关信息淡入效果

前言: 年关将至,公司一部分同事已经回老家了,虽然过年不回去,但想到明天上完班就放假了内心多少有点激动.工作上的事情不要紧的已经没心情再看了,加之今天领导不在 哈哈哈... 搞点自己的爱好! 看bootstrap的优站精选时看到了一个页面加载完毕时的一个淡入效果(http://www.mikeinghamdesign.com/),于是... 效果图: 实现思路: 此处实现主要用外边距margin-top属性和透明度opacity属性: 1.淡入区块初始设置一定上外边距,透明度完全透明: 2.页面

大坑啊!!!关于页面加载完毕事件!!!

这个坑导致我页面加载完毕后获取元素高度有问题,获取不正确或者是很小才20px,元素本身高度几百,困扰了我这个新手几天.原因就是js原生的onload事件和jq的ready事件的区别. 1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行.         $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个 

JS判断页面加载完毕

//JS判断页面加载完毕,再隐藏加载效果层,一个简单的JS加载效果. document.onreadystatechange = function () { if (document.readyState == "complete") { var page = DF.URLHash.get("page"); if (typeof (page) != "undefined" && page != "page1.html&q

关于selenium的智能等待页面加载的问题

我们经常会碰到用selenium操作页面上某个元素的时候,需要等待页面加载完成后,才能操作, 否则页面上的元素不存在,会抛出异常. 或者碰到AJAX异步加载,我们需要等待元素加载完成后,才能操作. 首先来讲,我们最不推荐的就是使用  Thread.sleep( ) ;  这个也叫做线程休眠. 这种写法通常是固定了一个时间,然而我们不知道页面具体的等待情况,有快有慢,虽然很百搭,但是并不适用于框架中. selenium 中提供了非常简单,智能的方法,来判断元素是否存在.我来简单的举例说明几种(在我