【问题标题】:How to control loading in Selenium WebDriver?如何控制 Selenium WebDriver 中的加载?
【发布时间】:2020-08-20 20:09:37
【问题描述】:

当我尝试运行我的脚本并调用此方法时,当我在地址栏中输入 URL 时,加载开始并且加载需要很长时间, 但是有时当刷新页面页面正确加载时,请帮助我。 我如何在自动化中处理这个问题。

public static MainPage LaunchBrowserAndLogin(String currentScriptName, String LoginUser) throws Throwable {
            try {
                  killprocess();
                  LaunchBrowser();
                  String siteUrl = null;
                  if (excelSiteURL != null) {
                        if (excelSiteURL.equalsIgnoreCase("")) {
                              siteUrl = CONFIG.getProperty("siteName");
                        }else{
                              if (excelSiteURL.contains("SiteName")) {
                                    siteUrl=excelSiteURL;
                              }
                        }
                  } else {
                        siteUrl = CONFIG.getProperty("SiteName");
                  }
                  driver.get("https://QA.YYYY.com/ABC9/#/login"); 
                  System.out.println("URL for Login: "+siteUrl);
                  CheckErrorPageNotFound();
                  driver.manage().timeouts().pageLoadTimeout(Long.parseLong(CONFIG.getProperty("pageLoadTime")), TimeUnit.SECONDS);
                  enterUserID(currentScriptName, LoginUser);
                  enterPasswd(currentScriptName);
                  MandatoryFieldSkipErrMsg("~~~~~~ Mandatory Field is skipped, Getting Error: ");
                  ClickLoginButton();
                  driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
            }catch(){
                DesireScreenshot("AfterClickOnLoginButton");
                String stackTrace = Throwables.getStackTraceAsString(t);
                String errorMsg = t.getMessage();
                errorMsg = "\n\n\n\n Login failed.See screenshot 'LoginFailed' \n\n\n\n" + errorMsg + stackTrace;
                Exception c = new Exception(errorMsg);
                ErrorUtil.addVerificationFailure(c);
                killprocess();
                IsBrowserPresentAlready = false;
                throw new Exception(errorMsg);
            }
         return new MainPage(driver);
}

【问题讨论】:

  • 能否请您分享您正在使用的 selenium 和驱动程序版本的详细信息。
  • Selenium webdriver, 3.1.10 和 chrome 版本 81

标签: java selenium selenium-webdriver selenium-chromedriver selenium-grid


【解决方案1】:

首先您需要检查页面是否已完全加载,在这种情况下,我们将使用以下代码。

new WebDriverWait(driver, 5).until(webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete"));

然后根据您的问题,我认为某些网络元素未正确加载。因此,您可以添加一个更显式的等待并将该等待放入 try catch 块中,如下所示。

试试 { 新的 WebDriverWait(驱动程序,5).until(ExpectedConditions.visibilityOfElementLocated(By.id("Abhishek"))); System.out.println("完成"); } 捕捉(超时异常 e) { System.out.println("重新加载"); driver.navigate().refresh(); }

如果无法找到该元素,则在 catch 块中它将刷新页面,这样您就可以继续进行。

注意:我本可以为您编写脚本,但应用程序 url 无效。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-01-31
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 2012-10-19
  • 2018-10-22
相关资源
最近更新 更多