• selenium测试(Java)-- 显式等待(九)


    转自:https://www.cnblogs.com/moonpool/p/5668571.html

    显式等待可以使用selenium预置的判断方法,也可以使用自定义的方法。

     1 package com.test.elementwait;
     2 
     3 import org.openqa.selenium.By;
     4 import org.openqa.selenium.WebDriver;
     5 import org.openqa.selenium.firefox.FirefoxDriver;
     6 import org.openqa.selenium.support.ui.ExpectedCondition;
     7 import org.openqa.selenium.support.ui.ExpectedConditions;
     8 import org.openqa.selenium.support.ui.WebDriverWait;
     9 
    10 public class ExplicitWait {
    11 
    12     public static void main(String[] args) {
    13         WebDriver driver = new FirefoxDriver();
    14         driver.get("http://www.baidu.com");
    15         driver.manage().window().maximize();
    16 
    17         //标题是不是“百度一下,你就知道”
    18         new WebDriverWait(driver,5).until(ExpectedConditions.titleIs("百度一下,你就知道"));
    19         //标题是不是包含“百度一下”
    20         new WebDriverWait(driver,5).until(ExpectedConditions.titleContains("百度一下"));
    21         //判断该元素是否被加载在DOM中,并不代表该元素一定可见        
    22         new WebDriverWait(driver,5).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='kw']")));
    23         //判断元素(定位后)是否可见
    24         new WebDriverWait(driver,5).until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//*[@id='kw']"))));
    25         //判断元素是否可见(非隐藏,并且元素的宽和高都不等以0)
    26         new WebDriverWait(driver,5).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='kw']")));
    27         //只要存在一个就是true
    28         ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath("//*[@id='kw']"));
    29         //元素中的text是否包含语气的字符串
    30         ExpectedConditions.textToBePresentInElementLocated(By.xpath("//*[@id='kw']"), "百度一下");
    31         //元素的value属性中是否包含语气的字符串
    32         ExpectedConditions.textToBePresentInElementValue(By.xpath("//*[@id='kw']"), "***");
    33         //判断该表单是否可以切过去,可以就切过去并返回true,否则放回false
    34         ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("**"));
    35         //判断某个元素是否不存在于DOM或不可见
    36         ExpectedConditions.invisibilityOfElementLocated(By.xpath("//*[@id='kw']"));
    37         //判断元素是否可以点击
    38         ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='kw']"));
    39         //等到一个元素从DOM中移除
    40         ExpectedConditions.stalenessOf(driver.findElement(By.xpath("//*[@id='kw']")));
    41         //判断某个元素是否被选中,一般用在下拉列表
    42         ExpectedConditions.elementToBeSelected(By.xpath("//*[@id='kw']"));
    43         //判断某个元素的选中状态是否符合预期
    44         ExpectedConditions.elementSelectionStateToBe(By.xpath("//*[@id='kw']"), true);
    45         //判断某个元素(已定位)的选中状态是否符合预期
    46         ExpectedConditions.elementSelectionStateToBe(driver.findElement(By.xpath("//*[@id='kw']")), false);
    47         //判断页面中是否存在alert
    48         new WebDriverWait(driver,5).until(ExpectedConditions.alertIsPresent());
    49         //--------------------自定义判断条件-----------------------------
    50         WebDriverWait wait = new WebDriverWait(driver, 3);
    51         wait.until(new ExpectedCondition<Boolean>() {
    52              public Boolean apply(WebDriver driver) {
    53                  return !driver.findElement(By.xpath("//*[@id='kw']")).getAttribute("class").contains("x-form-invalid-field");
    54                              }
    55                  });
    56         
    57     }
    58 
    59 }

    注:

    1.除了以上内容,selenium还提供了很多预置的判断方法。

    2.这些判断方法,在超出时间限制时就会抛出异常。

  • 相关阅读:
    c++ 全局变量初始化的一点总结
    新的博客
    Git常用命令总结
    git 分支 branch 操作
    状态管理Vuex
    让 markdown 生成带目录的 html 文件
    mysql安装时,提示:Failed to start service MYSQL80
    【React 资料备份】React Hook
    【React 资料备份】React v16.3之后的生命周期
    两个数组对象取并集
  • 原文地址:https://www.cnblogs.com/cheese320/p/8872638.html
Copyright © 2020-2023  润新知