selenium java

等待

页面全加载

ChromeOptions options=new ChromeOptions();
/**
*(1) NONE: 当html下载完成之后,不等待解析完成,selenium会直接返回
*(2) EAGER: 要等待整个dom树加载完成,即DOMContentLoaded这个事件完成,仅对html的内容进行下载解析
*(3) NORMAL: 即正常情况下,selenium会等待整个界面加载完成(指对html和子资源的下载与解析,如JS文件,图片等,不包括ajax)
*/
options.setPageLoadStrategy(PageLoadStrategy.NONE);
//添加参数,关闭拦截弹窗
options.addArguments("disable-popup-blocking");
options.addArguments("disable-notifications");
//关闭被自动化控制的提示
options.addArguments("disable-infobars");
options.addArguments("disable-extensions");
options.addArguments("start-maximized");

driver = new ChromeDriver(options);
private void Form1_Load(object sender, EventArgs e)
{
    ChromeOptions options = new ChromeOptions();
    options.AddArguments("--disable-extensions"); // to disable extension
    options.AddArguments("--disable-notifications"); // to disable notification
    options.AddArguments("--disable-application-cache"); // to disable cache
    options.AddArgument("--safebrowsing-disable-download-protection");
    options.AddArgument("ignore-certificate-errors");
    options.AddArgument("--disable-popup-blocking");
    options.AddArgument("--disable-gpu");
    options.AddArgument("--incognito");
    options.AddUserProfilePreference("disable-popup-blocking", "true");
    driveri = new ChromeDriver(options); 
    driveri.Navigate().GoToUrl("http://web.com");

    IJavaScriptExecutor js = (IJavaScriptExecutor)driveri; 
    js.ExecuteScript("window.alert = function() {};");
}

显式等待50秒

WebElement ele_14 = (new WebDriverWait(webDriver, 50)).until(ExpectedConditions.elementToBeClickable(By.xpath(SIT_Objects.tab_MPF)));
//visibilityOfElementLocated
    public boolean isPresent(String xpath, int waitingTimeInSec) {
        try {
            WebDriverWait wait = new WebDriverWait(webDriver, waitingTimeInSec);
            wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpath)));
        } catch (TimeoutException e) {
            return false;
        }
        return true;
    }

隐式等待

driver.manage().timeouts().implicitlyWait(50,TimeUnit.SECONDS); //与显式等待同时存在时,以其中最大值为准。

js

driver = new ChromeDriver(options);
Javascript = ((JavascriptExecutor) driver);
boolean jsReady=(Boolean)Javascript.executeScript("return document.readyState").toString().equals("complete");
while(!jsReady){
    Thread.sleep(100);
}
//Wait for jQuery to load
        {
            ExpectedCondition<Boolean> jQueryLoad = driver -> ((Long) ((JavascriptExecutor) driver).executeScript("return jQuery.active") == 0);
            boolean jqueryReady = (Boolean) js.executeScript("return jQuery.active==0");
            if (!jqueryReady) {
//System.out.println("JQuery is NOT Ready!");
                wait.until(jQueryLoad);
            }
            wait.until(jQueryLoad);
        }
//Wait for ANGULAR to load
        {
            String angularReadyScript = "return angular.element(document).injector().get('$http').pendingRequests.length === 0";
            ExpectedCondition<Boolean> angularLoad = driver -> Boolean.valueOf(((JavascriptExecutor) driver).executeScript(angularReadyScript).toString());
            boolean angularReady = Boolean.valueOf(js.executeScript(angularReadyScript).toString());
            if (!angularReady) {
//System.out.println("ANGULAR is NOT Ready!");
                wait.until(angularLoad);
            }
        }
//Wait for Javascript to load
        {
            ExpectedCondition<Boolean> jsLoad = driver -> ((JavascriptExecutor) driver).executeScript("return document.readyState").toString()
                    .equals("complete");
            boolean jsReady = (Boolean) js.executeScript("return document.readyState").toString().equals("complete");
//Wait Javascript until it is Ready!
            if (!jsReady) {
//System.out.println("JS in NOT Ready!");
                wait.until(jsLoad);
            }
        }

刷新

driver.navigate().refresh();

Refer

https://cloud.tencent.com/developer/article/1497428

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值