我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作。  否则页面上的元素不存在,会抛出异常。

或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操作

selenium 中提供了非常简单,智能的方法,来判断元素是否存在.

阅读目录

实例要求

实例:set_timeout.html 下面的html 代码,  点击click 按钮5秒后, 页面上会出现一个红色的div快, 我们需要写一段自动化脚本智能的去判断这个div是否存在, 然后把这个div 然后高亮。

Set Timeout

.red_box {background-color: red; width = 20%; height: 100px; border: none;}

function show_div(){

setTimeout("create_div()", 5000);

}

function create_div(){

d = document.createElement('div');

d.className = "red_box";

document.body.appendChild(d);

}

click

隐式等待

WebDriver driver = new FirefoxDriver();

driver.get("file:///C:/Users/Tank/Desktop/set_timeout.html");

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

WebElement element = driver.findElement(By.cssSelector(".red_box"));

((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);

其中

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

意思是, 总共等待10秒, 如果10秒后,元素还不存在,就会抛出异常  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("E:\\StashFolder\\huoli_28@hotmail.com\\Stash\\Tank-MoneyProject\\浦东软件园培训中心\\我的教材\\Selenium Webdriver\\set_timeout.html");

WebDriverWait wait = new WebDriverWait(driver, 20);

wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".red_box")));

WebElement element = driver.findElement(By.cssSelector(".red_box"));

((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);

}

java等待页面加载_java selenium (十三) 智能等待页面加载完成相关推荐

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

    我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作.  否则页面上的元素不存在,会抛出异常. 或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操 ...

  2. python selenium 等待页面加载_python selenium 三种等待方式详解(实战常用)

    引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待了,等待元素可见再继续运行程序: 注:当使用该放发的时 ...

  3. java 设置不可点击_Java Selenium webdriverwait 解决元素不可点击问题

    webdriver有两种等待方式:显式等待和隐式等待 因为现在大部分的web应用程序会使用AJAX技术.AJAX技术简单来说就是异步JavaScript和xml,是一种用户创建快速动态网页的技术,AJ ...

  4. java ios rsa解密乱码_java与IOS之间的RSA加解密

    很简单的一个需求,ipad端给密码RSA加密,传到java后台,解密.RSA加密算法是基于一个密钥对的,分为公钥和私钥,一般情况公钥加密,私钥解密,但也可私钥加密,公钥解密.还可以验签,就是先用私钥对 ...

  5. java大文件pdf水印_java – 如何扩展PDF的页面大小以添加水印?

    首先:在对数据进行数字签名之前更改文档非常重要.经过数字签名后,这些更改将破坏签名. 这个问题不是那个问题的重复,因为额外要求在右边增加额外的保证金. 看一下primes.pdf文档.这是我们将在Ad ...

  6. python的等待代码是什么_Python selenium 三种等待方式详解

    1.目的背景 解决问题:下拉框定位不到.弹框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待. 原因:代码运行速度快,而浏览器加载渲染速度慢 解决办法:加等待,目 ...

  7. java 从xml读变量_java – 如何从XML属性文件加载变量?

    我目前正在从Ant中的XML文件加载属性.但是,我想在for循环中执行当前的ant任务,同时每次为同一组属性加载新的XML属性文件. 我知道ant-contrib的var任务的存在,它允许我覆盖属性. ...

  8. java 找不到主类或无法加载_Java找不到或无法加载主类解决方法

    1.环境变量设置错误: 2.因为java程序文件有包,所以编译失败. 带包的java程序比普通java程序的编译稍微复杂一些.例如下面的例子: package cn.guopeng;import ja ...

  9. java模拟网易邮箱登录_java+selenium 实现网易邮箱登录功能

    今天学习selenium ,折腾了一整天,写个笔记记录一下今天的错误. 我用的是java+webdriver,在eclipse中运行,今天的学习是进行网易邮箱的登录功能.一开始代码运行一直报找不到元素 ...

最新文章

  1. 构造函数不能为虚/重载函数总结
  2. 面试时与人事交谈时间_如何与您的技术负责人交谈并解决通讯故障
  3. tensorflow全联接层fully_connected参数解释正确的
  4. python培训学校-如何找到靠谱的Python培训学校?
  5. convirt2.5在虚拟机上安装笔记
  6. find out the service list changed with given user which have item category group
  7. Thinking in C++遇到的函数指针及应用
  8. 看看老司机是如何提升B端产品架构能力的
  9. 爱立信:5G将加速物联网发展
  10. sql 替换字符串函数_你有一份Excel文本函数大全,请注意查收(下)
  11. Java学习笔记1:Java中有关print、println、printf的用法和区别
  12. MySql数据类型分析(字符类型) Part4
  13. vue computed 传参_Vue的构造选项
  14. Tomcat的下载与安装
  15. catia逆向建模步骤_catia逆向工程应用
  16. (25)梯度下降法求解曲面极小值
  17. 办信用卡哪家强?update 2014.11.21
  18. 邮箱发信量到达上限,发不出邮件,你知道该怎么办吗?
  19. AIGC席卷,抖快、阅文、知乎大战网文圈
  20. dwg文件怎么打开呢?dwg是啥呢?

热门文章

  1. 以Post方式向指定url地址发送数据并活得返回结果
  2. php处理XML数据
  3. [bzoj3450]Tyvj1952 Easy[概率dp]
  4. (转)gcc 的简单使用说明
  5. getAttribute, getParamter区别 转帖
  6. Confluence 6 上传文件
  7. vm15安装MACOS
  8. HTML文本样式标签
  9. java_js_json_日期格式化
  10. HDU 3861 The King’s Problem 强连通分量 最小路径覆盖