龙空技术网

软件测试学习笔记丨显式等待与隐式等待

霍格沃兹软件测试 46

前言:

现在小伙伴们对“webdriverwait详解”都比较关切,兄弟们都想要学习一些“webdriverwait详解”的相关知识。那么小编同时在网上汇集了一些有关“webdriverwait详解””的相关知识,希望姐妹们能喜欢,同学们一起来了解一下吧!

强制等待

Thread.sleep(5000);

隐式等待

//添加隐式等待

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));

显式等待必须: 每个需要等待的元素前面进行声明针对的是某个条件的等待时间,在设置的时间内,可以默认每隔一段时间也可以指定每隔多久去检查一次条件是否满足默认的检测频率0.5s;显示等待声明webDriver: 当前的driver 驱动AndroidDriver、ChromeDrivertimeout: 显示等待的总时间,最长超时时间sleeper: 每隔多久就去检查一下对应的显示等待条件,默认500sTimeoutException: 默认抛出的异常显示等待传入条件until(// 等待条件):等待期间,每隔一段时间「sleeper」 就会调一下等待条件,直到返回值不是false显示等待传入报错messagewithMessage(“报错message”):返回值false对应的报错信息ExpectedConditionspresenceOfElementLocated:元素在页面是否存在,不一定显示可见,只要在dom树存在即可。如果存在,则返回true

ExpectedConditions.presenceOfElementLocated(AppiumBy.xpath(""))visibilityOfElementLocated: 元素是否可见元素在页面是否可以肉眼可见

ExpectedConditions.visibilityOfElementLocated(AppiumBy.xpath(""))invisibilityOfElementLocated: 元素是否不可见

ExpectedConditions.invisibilityOfElementLocated(AppiumBy.xpath(""))elementToBeClickable: 元素是否可点击如果元素可以点击,则返回true

ExpectedConditions.elementToBeClickable(AppiumBy.xpath(""))Lambda不用lambda方式声明,直接使用另声明一个driver

Function<WebDriver, Object> function=new Function<>(){    @Override    public Object apply(WebDriver webDriver){        return webDriver.findElement(hot);    }};FluentWait<WebDriver> withMessage=webDriver.withMessage("查找失败");withMessage.until(function);
lambda简写
webDriverWait.withMessage("查找失败").until(webDriver -> webDriver.findElement(hot));

//显示等待

WebElement element=new WebDriverWait(driver,Duration.ofSeconds(3)) .until(ExpectedConditions.visibilityOfElementLocated( AppiumBy.id(“com.xueqiu.android:id/home_search”))); element.click();

流式等待

@Test    void fluentWaitTest(){        //流式等待        FluentWait wait =new FluentWait(driver)                //设置等待评估条件为真的时间 --超时总值                .withTimeout(Duration.ofSeconds(45))                //设置评估条件的频率 -- 轮询频率                .pollingEvery(Duration.ofSeconds(3))                // 忽略特定类型的异常                .ignoring(NoSuchElementException.class);        WebElement element = (WebElement) wait.until(new Function<AndroidDriver,WebElement>() {            @Override            public WebElement apply(AndroidDriver driver) {                return driver.findElement(AppiumBy.id("com.xueqiu.android:id/home_search"));            }        });        element.click();        driver.findElement(AppiumBy.id("com.xueqiu.android:id/search_input_text")).sendKeys("alibaba");        try {            sleep(5000);        } catch (InterruptedException e) {            throw new RuntimeException(e);        }    }

霍格沃兹的测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供 1v1 私教指导,BAT 级别的测试管理大咖量身打造职业规划。

标签: #webdriverwait详解