//隐式等待(20秒以内没哥一段时间就会去找元素,如果没找大也不会报错,过了20s才会报错)//driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);//显示等待WebDriverWait wait = new WebDriverWait(driver,10);wait.until(ExpectedConditions.presenceOfElementLocated(By.id("test")));
   //线程等待   Thread.sleep(2000);

参考:https://www.cnblogs.com/linxinmeng/p/6930197.html

selenium 找不到元素 (显式等待 和隐式等待的区别)

selenium自动化页面元素不存在异常发生的原因有一下几点:

(1)页面加载时间过慢,需要查找的元素程序已经完成但是页面还未加载成功。此时可以加载页面等待时间。

(2)查到的元素没有在当前的iframe或者frame中。此时需要切换至对应的iframe或者frame中才行。

(3)元素错误。

解决页面加载时间所引起的元素找不到,我们可以为页面设置加载时间。时间的设置分为以下三种:

(1)显式等待

显示等待是针对于某个特定的元素设置的等待时间,如果在规定的时间范围内,没有找到元素,则会抛出异常,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作。

public static void main(String[] args) throws IOException {

System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
WebDriver driver = new ChromeDriver(Options);
try {

WebDriverWait wait = new WebDriverWait(driver, 10, 1);
// 每隔1秒去调用一下until中的函数,默认是0.5秒,如果等待10秒还没有找到元素 。则抛出异常。
wait.until(new ExpectedCondition<WebElement>() {

@Override
public WebElement apply(WebDriver driver) {
driver.findElement(By.id("kw"));

return driver.findElement(By.id("kw"));
}

}).sendKeys("我是一个自动化测试小脚本");

} finally {
driver.close();
Runtime.getRuntime().exec("taskkill /F /im " + "chromedriver.exe");
Runtime.getRuntime().exec("taskkill /F /im " + "chrome.exe");
}
}

(2)隐式等待

隐式等待是设置的全局等待,分为1、页面加载超时等待 ;2、页面元素加载超时;3、异步脚本超时

如果是页面元素超时,设置等待时间,是对页面中的所有元素设置加载时间。隐式等待是其实可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

public static void main(String[] args) throws IOException {

System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
WebDriver driver = new ChromeDriver(Options);

try {
//页面加载超时时间设置为5s
driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
driver.get("https://www.baidu.com/");
//定位对象时给10s 的时间, 如果10s 内还定位不到则抛出异常
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.id("kw")).sendKeys("隐式等待");
//异步脚本的超时时间设置成3s
driver.manage().timeouts().setScriptTimeout(3, TimeUnit.SECONDS);

} finally {
driver.close();
Runtime.getRuntime().exec("taskkill /F /im " + "chromedriver.exe");
Runtime.getRuntime().exec("taskkill /F /im " + "chrome.exe");
}
}

(3)线程等待

线程等待是java语言中的线程类Thread类中的sleep()方法。此等待是很死板的,需要等待时间结束才会执行相关代码。该方法需要抛出InterruptedException 异常。一般不建议使用,但是在弹窗处理,可以优先选择线程等待。

public static void main(String[] args) throws IOException, InterruptedException {

System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
WebDriver driver = new ChromeDriver(Options);

try {

Thread.sleep(5000);
driver.findElement(By.id("kw")).sendKeys("线程等待");
} finally {
driver.close();
Runtime.getRuntime().exec("taskkill /F /im " + "chromedriver.exe");
Runtime.getRuntime().exec("taskkill /F /im " + "chrome.exe");
}
}

转载于:https://www.cnblogs.com/tarrying/p/9681991.html

selenium的三种等待时间相关推荐

  1. 三种等待时间原理及场景

    让我们来探讨探讨三种等待时间原理及场景 在使用web端自动化实施的过程中,常常会遇到页面还没加载完毕,脚本已经执行了,导致用例执行失败,为了确保页面加载完毕后再执行下一个脚本,我们通常采用设置等待的时 ...

  2. Selenium4+Python3系列 - Selenium的三种等待,强制等待、隐式等待、显式等待

    为什么要设置元素等待 直白点说,怕报错,哈哈哈! 肯定有人会说,这也有点太直白了吧. 用一句通俗易懂的话就是:等待元素已被加载完全之后,再去定位该元素,就不会出现定位失败的报错了. 如何避免元素未加载 ...

  3. selenium中三种等待方式:sleep,implicitly_wait,WebDriverWait

    三种等待方式:sleep 强制等待, sleep,设置等待多长时间,就要等待多长时间.等待完成后,才会继续下一步: from selenium import webdriver # 导入sleep f ...

  4. selenium三种等待时间之强制等待

    等待的作用: 在实际自动化实现过程中,都会添加等待来完善自动化测试的代码.自动化测试,是交由机器来执行的一种测试手段,用于提升测试效率,意味着每一次的自动化测试都需要有非常高的成功率,才可以达到提升效 ...

  5. selenium三种等待时间之显示等待

    显示等待 显示等待,对指定元素进行等待的一种等待方式.通过设置最大等待时间.检查频率,对页面的元素来进行等待,一旦找到元素,则停止等待,进入后续步骤. 它主要的意思就是:程序每隔x秒看一眼,如果条件成 ...

  6. selenium三种等待时间之隐式等待

    隐式等待: 其设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间结束,然后执行下一步操作. 使用方法:implicity_wait(10),在x时间内,页面加载完成, ...

  7. selenium的三种等待方式介绍及优缺点

    等待的作用 UI自动化中,运行的时候页面是需要有加载时间的. 等待作为ui自动化中极其核心的技术,是因为通过等待,才可以更好地保障自动化测试的稳定性. 三类等待机制 1.强制等待 就是time库下的s ...

  8. Python 自动化中三种等待时间的详解~

    自动化测试,是交由机器来执行的一种测试手段,用于提升测试效率,意味着每一次的自动化测试都需要有非常高的成功率,才可以达到提升效率的作用. 在自动化测试中,其实就是通过代码,来执行测试的流程,也就意味着 ...

  9. selenium的三种等待方式(显示等待,隐式等待,强制等待)简单了解与总结

    1.强制等待(无条件等待) 使用方法:time.sleep(delay) delay的单位为秒,delay设置多少秒页面就会等待多少秒(死等),这个方法很容易让线程挂掉,使程序抛异常,所以要慎用此方法 ...

最新文章

  1. 青少年编程竞赛交流群周报(第040周)
  2. Java 抽象类和接口
  3. 过程改进建设中的常见奖励措施
  4. 1027 Colors in Mars (20 分)_20行代码AC
  5. Windows2003下DHCP服务器备份、还原、迁移、绑定
  6. C语言——输出*菱形
  7. SpringMVCDemo中,遇到的问题(一)
  8. 打造高品质Axure组件库,就是这么简单!
  9. 用python智能修复度盘防和谐链接~
  10. 二叉树的叶结点/ 树的深度计算
  11. SHFileOperation复制文件夹、文件用法
  12. 【寻找最佳小程序】03期:摩拜单车小程序——联合微信团队打造,实现不换码一扫即用
  13. springboot热部署
  14. axure android尺寸,移动应用界面设计的尺寸设置及规范
  15. pandas读写表格
  16. java学习阶段小结
  17. 2019年计算机网络管理员大赛,【重磅】信息工程学院代表队入围2019年中国高校计算机大赛网络技术挑战赛晋级赛...
  18. pyhton面向对象笔记
  19. php fcgi 配置,apache使用fcgi配置PHP环境的步骤
  20. c#截取字符串后几位_C#几种截取字符串的方法小结 (摘抄)

热门文章

  1. ring0 ring3 kernel driver
  2. asyn4j -- java 异步方法调用框架
  3. 一个理性战胜感性的成功案例:P2P投资和活期理财,纠结中提炼出来的1个数学问题...
  4. (五十九)iOS网络基础之UIWebView简易浏览器实现
  5. webpack --- 使用vue
  6. 52次课(mysql用户管理、常用sql语句、 mysql数据库备份恢复)
  7. C++编程经验总结1
  8. 动态链接库 仅有.dll文件时候的使用方法
  9. Spring jdbc 对象Mapper的简单封装
  10. 在XenApp如何发布SAP的客户端(上)