Как контролировать загрузку в Selenium WebDriver? - PullRequest
1 голос
/ 06 мая 2020

Когда я пытаюсь запустить свои скрипты и вызываю этот метод, когда я ввожу URL-адрес в адресную строку, загрузка начинается и загрузка занимает много времени, но иногда, когда refre sh страница страницы правильно загружается на месте, пожалуйста, помогите мне . Как я могу решить эту проблему в автоматизации.

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);
}

1 Ответ

0 голосов
/ 08 мая 2020

Сначала вам нужно проверить, полностью ли загружена страница, в этом случае мы будем использовать приведенный ниже код.

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

Тогда, согласно вашему вопросу, я считаю, что некоторые веб-элементы не правильно загружается. Итак, что вы можете сделать, добавьте еще одно явное ожидание и поместите это ожидание в блок try catch, как показано ниже.

try {new WebDriverWait (driver, 5) .until (ExpectedConditions.visibilityOfElementLocated ( By.id ("Абхишек"))); System.out.println («Завершено»); } catch (TimeoutException e) {System.out.println ("Перезагрузка"); driver.navigate (). refre sh (); }

Если он не может найти этот элемент, тогда в блоке catch он обновит sh страницу, и таким образом вы сможете продолжить.

Примечание : Я мог бы написать сценарий для вас, но URL-адрес приложения недействителен.

...