首页 > 其他分享 >三种等待方式

三种等待方式

时间:2023-04-08 22:00:35浏览次数:39  
标签:10 方式 元素 driver 三种 new 等待 WebDriverWait

方式1:

线程等待:Thread.sleep(xxxx)

只要在case中加入sleep就会强制等待设置的时间后才会执行之后的命令,这种等待一般适用于调试脚本的时候。

java代码

//等待3秒
Thread.sleep(3000);
//完全退出浏览器
driver.quit();

 

 

方式2:

隐试等待:driver.manage().timeouts().implicitlyWait(xx, TimeUnit.SECONDS)

隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,如果元素不是马上就能定位成功就会在固定等待时长内不停去搜索元素,在设置时间内发现元素则执行后面操作,如果超出了设置的时间还没发现元素则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

java代码

System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
driver=new ChromeDriver();
//隐试等待 10秒
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

 

 

方式3:

显示等待: new WebDriverWait(driver, xx).until(ExpectedConditions.presenceOfElementLocated(By))

显示等待是等待指定元素设置的等待时间,在设置时间内,默认每隔0.5s检测一次当前的页面这个元素是否存在,如果在规定的时间内找到了元素则执行相关操作,如果超过设置时间检测不到则抛出异常。默认抛出异常为:NoSuchElementException。做自动化的时候推荐使用显示等待 java代码
driver.get("http://www.baidu.com");
        //声明一个Action对象
        Actions action=new Actions(driver);
        //鼠标移动到  更多产品 上
        action.moveToElement(driver.findElement(By.xpath("//a[text()='更多产品']"))).perform();
        //显示等待时间10s 等   全部产品>>  出现
        WebDriverWait w=new WebDriverWait(driver,10);
        w.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//a[text()='全部产品>>']")));
        //等待的元素出现后点击  音乐  
        WebElement cp=driver.findElement(By.xpath("//a[text()='音乐']"));
        cp.click();
        //断言音乐页面的Title值为   千千音乐-听见世界
        Assert.assertEquals("千千音乐-听见世界",driver.getTitle());

 

WebDriverWait wait = new WebDriverWait(driver,10);//10秒

//判断该元素是否被加载在DOM中,并不代表该元素一定可见。

wait.until(ExpectedConditions.presenceOfElementLocated(By.xxx));

 

   

标签:10,方式,元素,driver,三种,new,等待,WebDriverWait
From: https://www.cnblogs.com/ixtao/p/17299342.html

相关文章

  • IOC创建对象的方式
    使用无参构造创建对象,默认!有参会在beans.xml中报错假设我们使用有参构造创建对象下标赋值<beanid="user"class="com.gy.pojo.User"><constructor-argindex="0"value="alice"/></bean>通过参数类型string创建,不建议使用直接通过参数名创建<beanid......
  • Jmeter参数化的方式-用户参数、用户自定义变量、CSV文件设置、函数助手
    一、jmeter的主要功能参数化:事先准备好数据,脚本执行时从准备好的数据中取值;可将脚本中的某些输入使用参数来代替,在脚本运行时指定参数的取值范围和规则;在脚本运行时,根据需要选取不同的参数值作为输入,该方式成为数据驱动测试(DataDrivernTest,DDT),参数的取值范围称为数据池(Data......
  • JavaScript的引入方式
    外部JS文件deno.jsalert('你好!JavaScript');JS引入方式.html<!--方式一:内部脚本--><!--标签不能自闭和--><script>alert('你好JS')</script><!--方式二:外部引入--><scriptsrc="demo.js"></script>......
  • vue3学习第二课:组件和父组件的传递数据给子组件方式props
    1,在conponents目录中新建header.vue<template><div><h1>这是头部组件</h1></div></template>2,在App.vue中添加<template><div><Header></Header><Main></Main><Foote......
  • 编写一个程序以确定分别由signed及unsigned限定的char、short、int及long类型变量的取
    #include<stdio.h>#include<limits.h>main(){printf("采用打印标准头文件limits.h的相应值\n");//signertypesprintf("signedcharmin=%d\n",SCHAR_MIN);printf("signedcharmax=%d\n",SCHAR_MAX);prin......
  • js数据遍历几种方式
    在JavaScript中,有多种方式可以遍历数据集,下面列出了常用的几种:for循环for循环是一种常见的遍历数据集的方式,可以用于遍历数组、对象等数据类型。例如:constarr=[1,2,3];for(leti=0;i<arr.length;i++){console.log(arr[i]);}constobj={a:1,b:2,......
  • JUC并发编程基础篇第六章之LockSupport[notify,signal之外的另一种唤醒方式]
    目录1、LockSupport有什么用2、使用wait和notify唤醒一个线程2.1、正常情况2.2、异常情况2,这里去掉了synchronized(o){}代码块2.3、异常情况3先notify再wait3、使用await和signal唤醒一个线程3.1、正常情况3.2、异常情况:如果去除锁块3.3、异常情况:先执行signal......
  • 003.网络连接的三种方式
    1.桥接模式虚拟系统可以和外部通讯,但是容易造成IP冲突。2.NTA模式网络地址转换模式,虚拟系统可以和外部通讯,不会造成IP冲突。3.主机模式独立的系统,不和外界发生联系......
  • golang TLS方式发送邮件
    packagemailimport( "crypto/tls" "errors" "fmt" "net/smtp" "net/textproto")typeloginAuthstruct{ username,passwordstring}//LoginAuthisfuncLoginAuth(usernamestring,passwordstring)......
  • VMware虚拟机三种网络模式
    VMware虚拟机三种网络模式 参考资料:https://www.cnblogs.com/ylxtiankong/p/17294894.html测试虚拟机:Windows7x64 VMware虚拟机三种网络模式1.桥接模式:连接桥接的网卡,等同于本地局域网主机,网络配置同局域网主机。默认网关:----有虚拟机之间通信----ok虚拟机到主......