2017-02-20 647 views
-1

Ok здесь мой код и, но он сразу же выполняетКак подождать, пока селен завершит навигацию?

 private static ChromeDriver mainDriver; 
     mainDriver.Navigate().GoToUrl(srFetchUrl); 
     string srPageSource = mainDriver.PageSource; 

Я должен получить исходный код после того, как страница будет фактически перемещаться на новую страницу и загрузку страницы

+0

Что такое 'googleTranslateMainDriver'? 'mainDriver.getPageSource()' должен возвращаться только после полной загрузки страницы в Selenium 2.0. Конечно, после загрузки модификаций страницы из JavaScript не обрабатываются. – dhke

+0

@dhke да это mainDriver. также он возвращает исходный код старой страницы, когда я перемещаюсь – MonsterMMORPG

+0

Почему бы вам не попробовать pageloadtimeout? driver.manage(). timeouts(). pageLoadTimeout (10, TimeUnit.SECONDS); – shank087

ответ

-1

Укажите, явные или неявные ждать, пока элемент на странице загружен.

передать этот link для C# ожидания синтаксиса

+0

В настоящее время он дает мне предыдущий исходный код страницы. таким образом, он все равно может дать исходный код предыдущей страницы? – MonsterMMORPG

+0

Это не отвечает на вопрос. Если в ссылке есть что-то конкретное, напишите здесь код. – JeffC

+0

@MonsterMMORPG, поскольку я понимаю ваш вопрос, вам нужно перейти на следующую страницу и правильно получить исходный код этой страницы? исправьте меня, если я ошибаюсь. Теперь, согласно моему пониманию, проблема связана с немедленным выполнением, поэтому он не получает исходный код следующей страницы, поэтому, если мы укажем значительную сумму ожидания до загрузки следующей страницы, и вы можете выполнить команду для получения исходного кода. – Dharam

0

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

public void E_WaitForPageLoad() throws Exception 
{ 
    JavascriptExecutor js = (JavascriptExecutor)driver; 
    //This loop will rotate for 100 times to check If page Is ready after every 1 second. 
    //You can replace your if you wants to Increase or decrease wait time. 
    int waittime; 
    waittime = 60; 
    for (int i=0; i<waittime; i++) 
    { 
     try 
     { 
      Thread.sleep(1000); 
     }catch (InterruptedException e) {} 
     //To check page ready state. 
     if (js.executeScript("return document.readyState").toString().equals("complete")) 
     { 
      //System.out.println("Wait for Page Load : "+js.executeScript("return document.readyState").toString()); 
      break; 
     } 
    } 
    System.out.println("\nWeb-Page Loaded."); 
} 

Спасибо,
Ed D, Индия.