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

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

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

阅读目录

实例要求

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

<html><head><title>Set Timeout</title><style>.red_box {background-color: red; width = 20%; height: 100px; border: none;}</style><script>function show_div(){setTimeout("create_div()", 5000);}function create_div(){d = document.createElement('div');d.className = "red_box";document.body.appendChild(d);}</script></head><body><button id = "b" onclick = "show_div()">click</button></body>
</html>

隐式等待

        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 selenium (十三) 智能等待页面加载完成相关推荐

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

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

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

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

  3. webdriver 等待页面加载完成_Python爬虫,登陆神器Selenium等待(waits)页面加载的三种方法...

    网页常常会因为网络原因,程序问题等等导致打开网页慢,一直在那里打圈圈. 出现这种情况时网页里的很多元素就没有加载完成,如果你刚好要定位的元素没有加载完,这时定位的话程序就会抛出异常. 所以程序里要加入 ...

  4. python如何校验页面元素是否加载完毕_爬虫(八十七)等待页面加载完成(Waits)...

    现在的大多数的Web应用程序是使用Ajax技术.当一个页面被加载到浏览器时, 该页面内的元素可以在不同的时间点被加载.这使得定位元素变得困难, 如果元素不再页面之中,会抛出 ElementNotVis ...

  5. python跳转到新页面、如何等待页面加载完_Selenium Python:如何等待页面加载?

    As @ user227215说你应该使用WebDriverWait来等待你的页面中的元素: from selenium import webdriver from selenium.webdrive ...

  6. html加载状态,js等待页面加载完成

    页面加载完成后等待一段时间在执行js的方法,时间例如方法: function test(){return 1;} 页面加载完毕事件: window.onload = function(){ setTi ...

  7. Hello Playwright:(8)等待页面加载

    在我们前面的文章中,我们始终使用await page.GotoAsync(url);加载页面,我们的目的是等待足够长的时间让页面上的元素出现.但是,我们更希望永远不要因为等待浪费任何时间. WaitU ...

  8. selenium批量处理出现页面加载不全现象

    批量登录设备执行操作时(150台设备),每次一到第22台设备时,页面加载不出来,直接报错. 经过各种网上看教程,还是没解决. 怀疑是进程没释放,缓存满了. 尝试每次循环一次,结束chromedrive ...

  9. selenium 等待页面加载完成

    一.隐形加载等待: file:///C:/Users/leixiaoj/Desktop/test.html 该页面负责创建一个div <html> <head><titl ...

最新文章

  1. mysql-innodb 日志机制分析----写在死锁前面
  2. 关于Silverlight安装问题之二
  3. linux kbhit扫描键盘,(转)检测按键(Linux中kbhit()函数的实现)
  4. 自考计算机及应用笔记,自考“计算机及应用”专业论文参考范文
  5. 美国网红python图片_美国失业人数突破2200万!这个动态图我用Python画出来了!...
  6. 【verilog语法】关于testbench与被测module的输入输出数据类型定义:reg/wire原因
  7. 垃圾模块清理工具小程序功能模块0.33
  8. 大数据之-Hadoop3.x_MapReduce_Job提交流程---大数据之hadoop3.x工作笔记0103
  9. Linux下的C程序如何调用系统命令,并获取系统的输出信息到C程序中
  10. 老司机带你了解微信/支付宝支付的相关概念
  11. pcb怎么画边框_PCB设计--PCB画图技巧
  12. Excel如何生成11位随机数,包含大小写字母和数字
  13. 你了解眼角膜移植术吗?哪些眼疾需要接受角膜移植呢?
  14. 6.JUC-共享模型之工具
  15. 使用Python生成数据
  16. 短网址dwz.cn批量注册
  17. 费雪MOGAFX方程式是什么? -
  18. MCDF实验_lab1(1)
  19. 双线性 双三次 和基于lanczos 的插值算法
  20. 虚假新闻检测论文阅读(七):A temporal ensembling based semi-supervised ConvNet for the detection of fake news

热门文章

  1. webpack多个Html,使用webpack构建多页面应用
  2. 科学家奠定了计算机的基础,大学计算机基础考试笔试重点
  3. python常用包及其用法_Python 使用的部分常用包以及数据分析pandas及工具jupyter使用...
  4. python创意编程是什么_Python趣味创意编程
  5. C语言丨小 学 数 学(一):高精度加法
  6. matlab 上穿,Matlab混入模式(Mixin)
  7. c语言socket段错误,(Qtcpsocket)退出程序时提示段错误的解决
  8. loadrunner java 环境_java应用程序及服务器优化过程及loadrunner测试效果
  9. XMLHttpRequest.overrideMimeType()
  10. 1.10 梯度消失与梯度爆炸