Selenium java通过maven搭建测试环境——5.元素三大等待

硬性等待

线程休眠,强制等待:Thread.sleep(long millis);

隐式等待

在设置的超时时间范围内不断查找元素,知道找到元素或者超时

设置方式:driver.manage.timeouts().implicitlyWait(long time,TimeUnit unit);

优点:相对灵活

缺点:设置是针对全局的,在WebDriver实例整个生命周期有效,但并不是所有的元素都需要等待。

显示等待

用来等待某个条件发生后再继续执行后续代码(如找到元素、元素可点击、元素已显示等)

设置方式:

WebDriverWait wait = new WebDriverWait();

WebElement element = wait.until(expectCondition);

方法

等待条件

visibilityOfElementLocated(By locator)

页面元素在页面存在并且可见

elementToBeClickable(By locator)

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

elementToBeSelected(WebElement element)

页面元素处于被选中状态

textToBePresentlnElement(By locator)

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

presenceOfElementLocated(By locator)

页面元素在页面上中存在

//在driver实例化完成之后设置隐式等待,设置超时的时间为5s
//chromeDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
chromeDriver.findElement(By.id("kw")).sendKeys("腾讯课堂");
chromeDriver.findElement(By.id("su")).click();
//代码执行速度太快,UI元素没有立马显示处理,造成两者不同步,从而元素找不到
//Thread.sleep(3000);
//显示等待
WebDriverWait webDriverWait = new WebDriverWait(chromeDriver,5);
webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[text()='_职业培训、考试提升在线教育平台']")));
chromeDriver.findElement(By.xpath("//a[text()='_职业培训、考试提升在线教育平台']")).click();

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值