Разница между webdriver.get () и webdriver.navigate ()

В чем разница между методами get() и navigate() ? Любой из этого или, возможно, другого метода ожидает загрузки содержимого страницы? Что мне действительно нужно, это что-то вроде selenium s 1.0 WaitForPageToLoad, but for using via webdriver`.

Какие-либо предложения?

    навигационный

    Первое, что вы захотите сделать с WebDriver, – это перейти к странице. Обычный способ сделать это – вызвать get :

     driver.get("http://www.google.com"); 

    WebDriver будет ждать, пока страница полностью загрузится (то есть, событие onload ), прежде чем возвращать управление вашему тесту или скрипту. Стоит отметить, что если ваша страница использует большое количество AJAX при загрузке, то WebDriver может не знать, когда она полностью загружена. Если вам необходимо обеспечить полную загрузку таких страниц, вы можете использовать waits .

    Навигация: история и местоположение

    Ранее мы рассматривали driver.get("http://www.example.com") на страницу с помощью команды get ( driver.get("http://www.example.com") ). Как вы видели, у WebDriver есть несколько меньших, ориентированных на задачи интерфейсов и навигации является полезной задачей. Поскольку загрузка страницы является таким основополагающим требованием, способ сделать это живет на главном интерфейсе WebDriver, но это просто синоним:

     driver.navigate().to("http://www.example.com"); 

    Повторить: navigate().to() To navigate().to() и get() сделать то же самое . Набирать намного легче, чем другие!

    Интерфейс navigate также предоставляет возможность перемещения назад и вперед в истории вашего браузера:

     driver.navigate().forward(); driver.navigate().back(); 

    (Добавлен акцент)

    Они оба, похоже, переходят к данной веб-странице и цитируют @matt ответ:

    navigate().to() и get() сделать то же самое.

    Исключение составляют одностраничные приложения .

    Разница между этими двумя методами происходит не от их поведения, а от поведения в том, как работает приложение и как браузер справляется с ним.

    navigate().to() перемещается на страницу, изменяя URL-адрес, например, делая перемотку вперед / назад.

    Принимая во внимание, что get() обновляет страницу до изменения URL-адреса.

    Таким образом, в тех случаях, когда домен приложения изменяется, оба метода ведут себя аналогичным образом. То есть страница обновляется в обоих случаях. Но в одностраничных приложениях, пока navigate().to() не обновляет страницу, get() do.

    Более того, это причина, по которой история браузера теряется, когда get() используется из-за обновления приложения.

    Первоначально ответили: https://stackoverflow.com/a/33868976/3619412

    driver.get() : он используется для перехода на конкретный веб-сайт, но он не поддерживает историю браузера и cookies, поэтому мы не можем использовать кнопку «вперед» и «назад», если мы нажмем на нее, страница не получит расписание

    driver.navigate() : он используется для перехода на конкретный веб-сайт, но он поддерживает историю браузера и cookies, поэтому мы можем использовать кнопку «вперед» и «назад» для перемещения между страницами во время кодирования Testcase

    Не уверен, что это применимо и здесь, но в случае protractorа при использовании navigate().to(...) история сохраняется, но при использовании get() она теряется.

    Один из моих тестов был неудачным, потому что я использовал get() 2 раза подряд, а затем выполнил navigate().back() . Поскольку история была потеряна, когда она возвращалась, она переходила на страницу с сообщением об ошибке:

     Error: Error while waiting for Protractor to sync with the page: {} 

    Для чего это стоит, из моего тестирования IE9, похоже, что существует разница для URL-адресов, содержащих хеш-бэнг (одностраничное приложение, в моем случае):

     http://www.example.com#page 

    Метод driver.get("http://www.example.com#anotherpage") обрабатывается браузером как идентификатор fragmentа, а переменные JavaScript сохраняются из предыдущего URL-адреса.

    В то время как метод navigate().to("http://www.example.com#anotherpage") обрабатывается браузером как входной адрес адреса / местоположения / URL-адреса, а переменные JavaScript не сохраняются из предыдущего URL-адреса.

    navigate (). to () и get () будут работать одинаково при первом использовании. Когда вы используете его более одного раза, используя navigate (). To (), вы можете перейти на предыдущую страницу в любое время, тогда как вы можете сделать то же самое с помощью get ().

    Вывод: navigate (). To () содержит всю историю текущего windows и get () просто перезагружает страницу и сохраняет историю.

    Если у вас больше мест, где асинхронное поведение имеет значение, вы можете взглянуть на идеальный листок windows, который позволяет справиться с этим: http://code.google.com/p/windowlicker/

    В противном случае вы хотите получить метод get:

     Load a new web page in the current browser window. This is done using an HTTP GET operation, and the method will block until the load is complete. 

    Насколько я понимаю, Navigate позволяет работать с историей браузера.

    Согласно javadoc для get (), это синоним Navigate.to ()

    Просмотреть снимок экрана javadoc ниже:

    javadoc screenshot

    Javadoc для get () говорит все –

    Загрузите новую веб-страницу в текущее окно браузера. Это делается с помощью операции HTTP GET, и метод будет блокироваться до завершения загрузки. Это будет следовать за перенаправлениями, выпущенными либо сервером, либо как мета-redirect из возвращаемого HTML. Если мета-редирект «restает» в течение любого периода времени, лучше подождать, пока этот таймаут не закончится, так как если базовая страница изменится, пока ваш тест выполнит результаты будущих вызовов против этого интерфейса, будет против только что загруженной стр. Синоним для org.openqa.selenium.WebDriver.Navigation.to (String) .

    driver.get() используется для навигации по определенному URL (веб-сайту) и дождаться загрузки страницы.

    driver.navigate() используется для перехода к определенному URL-адресу и не driver.navigate() загрузки страницы. Он поддерживает историю браузера или cookies для перехода назад или вперед.

    Обе выполняют ту же функцию, но driver.get (); кажется более популярным. driver.navigate().to(); лучше всего использовать, когда вы уже находитесь в середине скрипта, и вы хотите перенаправить с текущего URL на новый. Ради дифференцирования ваших кодов вы можете использовать driver.get(); для запуска первого URL-адреса после открытия экземпляра браузера, хотя оба они будут работать в любом случае.

    driver.get(url) и navigate.to(url) оба используются для перехода на определенную веб-страницу. Главное различие заключается в том, что driver.get(url) : он не поддерживает историю браузера и cookies и дождитесь полной загрузки страницы. driver.navigate.to(url) : он также используется для перехода на конкретную веб-страницу. Поддерживает историю браузера и cookies и не загружает страницу полностью и перемещается между страницами назад, вперед и обновляется.

    ДЕЛО 1

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

     public class FirefoxInvoke { @Test public static void browserInvoke() { System.setProperty("webdriver.gecko.driver", "gecko-driver-path"); WebDriver driver=new FirefoxDriver(); System.out.println("Before"+driver.getTitle()); driver.get("http://www.google.com"); driver.get("http://www.facebook.com"); driver.get("http://www.india.com"); driver.navigate().back(); driver.quit(); } public static void main(String[] args) { // TODO Auto-generated method stub browserInvoke(); } } 

    CASE-2:

    В нижеприведенном коде я использовал navigate () вместо get (), но оба fragmentа (Case-1 и Case-2) работают точно так же, просто время выполнения case-2 меньше, чем case-1

     public class FirefoxInvoke { @Test public static void browserInvoke() { System.setProperty("webdriver.gecko.driver", "gecko-driver-path"); WebDriver driver=new FirefoxDriver(); System.out.println("Before"+driver.getTitle()); driver.navigate().to("http://www.google.com"); driver.navigate().to("http://www.facebook.com"); driver.navigate().to("http://www.india.com"); driver.navigate().back(); driver.quit(); } public static void main(String[] args) { // TODO Auto-generated method stub browserInvoke(); } } 
    • Таким образом, основное отличие между get () и navigate () заключается в том, что обе выполняют одну и ту же задачу, но с помощью навигации () вы можете перемещать назад () или вперед () в историю своего сеанса.
    • navigate () быстрее, чем get (), потому что navigate () не дожидается полной загрузки страницы.
    Interesting Posts

    Что делает атрибут crossContext в Tomcat? Включает ли это совместное использование сеанса?

    Как установить лимиты для осей в графиках ggplot2 R?

    Разница между «char» и «String» в Java

    Java, найти пересечение двух массивов

    URLConnection или HTTPClient: что обеспечивает лучшую функциональность и эффективность?

    Зарядные устройства USB-C: Безопасно ли заряжать телефон с электропитанием ноутбука?

    Как Windows 7 решает, какой маршрут нужно предпринять, если существуют 2 подключения к интернет-источнику? (Например, беспроводной и Ethernet-маршрутизатор)

    firefox svg canvas drawImage error

    Новый символ строки \ n не отображается правильно в текстовом приложении Android

    Как создать и запустить проекты Maven после импорта в Eclipse IDE

    Ошибка в файле strings.xml в Android

    Не удалось установить доверительные отношения для безопасного канала SSL / TLS – SOAP

    Играет много разных видео на iphone, используя AVPlayer

    Spark 2.0 Dataset против DataFrame

    Как переустановить службу HTTP-окон

    Давайте будем гением компьютера.