微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

selenium实战:智能等待页面加载完成

package javaBase;

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.webdriverwait;

import java.util.concurrent.TimeUnit;


/**
 * java selenium 页面加载
 * 我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作。  否则页面上的元素不存在,会抛出异常。
 *
 * 或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操作
 *
 * selenium 中提供了非常简单,智能的方法,来判断元素是否存在.
 *
 * 实例:html
 * 点击click 按钮5秒后, 页面上会出现一个红色的div快, 我们需要写一段自动化脚本智能的去判断这个div是否存在, 然后把这个div 然后高亮。
 */
public class TestSetSeleniumServerJAR {
    public static void main(String[] args) {

        //谷歌浏览器
        WebDriver driver = new ChromeDriver();

        /**
         * 隐式等待
         */
/*
        driver.get("http://localhost:8888/Selenium/");

/
        //总共等待10秒, 如果10秒后,元素还不存在,就会抛出异常  org.openqa.selenium.NoSuchElementException
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        WebElement element = driver.findElement(By.cssSelector(".red_Box"));
        ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);
*/


        /**
         * 显式等待
         *
         * 显式等待 使用ExpectedConditions类中自带方法, 可以进行显试等待的判断。
         *
         * 显式等待可以自定义等待的条件,用于更加复杂的页面等待条件
         *
         */
        driver.get("http://localhost:8888/Selenium/");

        /**
         *只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑
         *
         * 如果超过设定的最大显式等待时间阈值, 这测试程序会抛出异常。
         */

        webdriverwait wait = new webdriverwait(driver, 20);
        wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".red_Box")));
        WebElement element = driver.findElement(By.cssSelector(".red_Box"));
        ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);

        /**
         * 等待的条件
         *
         * WebDriver方法
         *
         * 页面元素是否在页面上可用和可被单击
         *
         * elementToBeClickable(By locator)
         *
         * 页面元素处于被选中状态
         *
         * elementToBeSelected(WebElement element)
         *
         * 页面元素在页面中存在
         *
         * presenceOfElementLocated(By locator)
         *
         * 在页面元素中是否包含特定的文本
         *
         * textToBePresentInElement(By locator)
         *
         * 页面元素值
         *
         * textToBePresentInElementValue(By locator, java.lang.String text)
         *
         * 标题 (title)
         *
         * titleContains(java.lang.String title)
         */

    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐