programing

webdriver.get ()과 webdriver.navigate ()의 차이점

nasanasas 2020. 12. 29. 07:10
반응형

webdriver.get ()과 webdriver.navigate ()의 차이점


get()navigate()방법 의 차이점은 무엇입니까 ? 이 방법 또는 다른 방법이 페이지 콘텐츠가로드 될 때까지 대기합니까? 내가 정말로 필요한 것은 셀레늄 s 1.0WaitForPageToLoad but for using via웹 드라이버 와 같은 것 입니다.

어떤 제안?


탐색

WebDriver로 가장 먼저 할 일은 페이지로 이동하는 것입니다. 이를 수행하는 일반적인 방법은 다음을 호출하는 것입니다 get.

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

WebDriver는 onload테스트 또는 스크립트에 제어를 반환하기 전에 페이지가 완전히로드 될 때까지 (즉, 이벤트가 시작될 때까지) 기다립니다 . 페이지가로드시 많은 AJAX를 사용하는 경우 WebDriver가 완전히로드 된시기를 알지 못할 수 있습니다. 이러한 페이지가 완전히로드되었는지 확인하려면을 사용할 수 있습니다 waits.

탐색 : 역사 및 위치

앞서 살펴본 것처럼 get( driver.get("http://www.example.com")) 명령을 사용하여 페이지로 이동하는 방법에 대해 살펴 보았습니다. WebDriver에는 여러 개의 작은 작업 중심 인터페이스가 있으며 탐색은 유용한 작업입니다. 페이지를로드하는 것은 기본적인 요구 사항이므로이 작업을 수행하는 방법은 기본 WebDriver 인터페이스에 있지만 다음과 같은 동의어 일뿐입니다.

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

반복하려면 다음 navigate().to()get()정확히 같은 일을 . 하나는 다른 것보다 타이핑하기가 훨씬 쉽습니다!

navigate인터페이스는 브라우저의 역사에서 앞뒤로 이동할 수있는 기능을 노출 :

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

(강조 추가)


둘 다 주어진 웹 페이지로 이동하고 @matt 답변을 인용하는 것 같습니다.

navigate().to()그리고 get()정확히 같은 일을.

단일 페이지 애플리케이션 은 예외입니다.

이 두 방법의 차이점은 동작이 아니라 응용 프로그램이 작동하는 방식과 브라우저가 처리하는 방식에서 비롯됩니다.

navigate().to() 앞으로 / 뒤로 탐색하는 것처럼 URL을 변경하여 페이지로 이동합니다.

반면에 get()페이지를 새로 고쳐 URL을 변경합니다.

따라서 응용 프로그램 도메인이 변경되는 경우 두 방법 모두 유사하게 작동합니다. 즉, 두 경우 모두 페이지가 새로 고쳐집니다. 그러나 단일 페이지 응용 프로그램에서는 navigate().to()페이지를 새로 고치지 않지만 get()수행하십시오.

또한 get()응용 프로그램을 새로 고쳐 사용 하면 브라우저 기록이 손실 되는 이유입니다.

원래 답변 : https://stackoverflow.com/a/33868976/3619412


driver.get(): 특정 웹 사이트로 이동하는데 사용 되나 브라우저 히스토리와 쿠키를 유지하지 않기 때문에 앞으로 / 뒤로 버튼을 사용할 수 없습니다. 클릭하면 페이지가 일정을 얻지 못합니다.

driver.navigate(): 특정 웹 사이트로 이동하는 데 사용되지만 브라우저 기록과 쿠키를 유지하므로 Testcase 코딩 중에 앞뒤 버튼을 사용하여 페이지 사이를 이동할 수 있습니다.


여기에도 적용되는지 확실하지 않지만 각도기의 경우 사용 navigate().to(...)내역은 보관되지만 사용시 get()손실됩니다.

get()두 번 연속 으로 사용 하고 navigate().back(). 히스토리가 손실 되었기 때문에 돌아 가면 about 페이지로 이동하고 오류가 발생했습니다.

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")메서드는 브라우저에서 조각 식별자로 처리되며 JavaScript 변수는 이전 URL에서 유지 됩니다.

그러나이 navigate().to("http://www.example.com#anotherpage")메서드는 브라우저에서 주소 / 위치 / URL 표시 줄 입력으로 처리되며 JavaScript 변수는 이전 URL에서 유지되지 않습니다 .


navigate (). to () 및 get ()은 처음 사용할 때 동일하게 작동합니다. 두 번 이상 사용하고 navigate (). to ()를 사용하면 언제든지 이전 페이지로 이동할 수 있지만 get ()을 사용하여 동일한 작업을 수행 할 수 있습니다.

결론 : navigate (). to ()는 현재 창의 전체 히스토리를 보유하고 get ()은 페이지를 다시로드하고 히스토리를 보유합니다.


get ()의 javadoc에 따라 Navigate.to ()의 동의어입니다.

아래의 javadoc 스크린 샷보기 :

javadoc 스크린 샷

get () 용 Javadoc은 모든 것을 말합니다.

현재 브라우저 창에서 새 웹 페이지를로드합니다. 이 작업은 HTTP GET 작업을 사용하여 수행되며로드가 완료 될 때까지 메서드가 차단됩니다. 이는 서버에서 발행 한 리디렉션을 따르거나 반환 된 HTML 내에서 메타 리디렉션으로 실행됩니다. 메타-리디렉션 "휴식"이 일정 기간 동안 지속되는 경우, 테스트가이 인터페이스에 대한 향후 호출 결과를 실행하는 동안 기본 페이지가 변경되면 새로로드 된 페이지에 대한 것이므로이 시간 초과가 끝날 때까지 기다리는 것이 가장 좋습니다. 페이지. org.openqa.selenium.WebDriver.Navigation.to (String)의 동의어입니다 .


driver.get() 특정 URL (웹 사이트)을 탐색하고 페이지가로드 될 때까지 대기하는 데 사용됩니다.

driver.navigate()특정 URL로 이동하는 데 사용되며 페이지로드를 기다리지 않습니다. 앞뒤로 탐색하기 위해 브라우저 기록 또는 쿠키를 유지합니다.


둘 다 동일한 기능을 수행하지만 driver.get (); 더 인기있는 것 같습니다. driver.navigate().to();이미 스크립트 중간에 있고 현재 URL에서 새 URL로 리디렉션하려는 경우 가장 적합합니다. 코드를 구별하기 위해 driver.get();브라우저 인스턴스를 연 후 첫 번째 URL을 시작하는 데 사용할 수 있지만 둘 다 어느 쪽이든 작동합니다.


driver.get(url)그리고 navigate.to(url)모두는 특정 웹 페이지로 이동하는 데 사용됩니다. 주요 차이점은 driver.get(url)브라우저 기록과 쿠키를 유지하지 않고 페이지가 완전히로드 될 때까지 기다린다는 것입니다. driver.navigate.to(url): 또한 특정 웹 페이지로 이동하는 데 사용됩니다. 브라우저 기록과 쿠키를 유지하고 페이지를 완전히로드하지 않고 페이지를 뒤로, 앞으로 및 새로 고칠 수 있습니다.


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

            }

사례 -2 :

아래 코드에서 get () 대신 navigate ()를 사용했지만 두 코드 조각 (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();
                }

            }
  • So the main difference between get() and navigate() is, both are performing the same task but with the use of navigate() you can move back() or forward() in your session's history.
  • navigate() is faster than get() because navigate() does not wait for the page to load fully or completely.

Otherwise you prob want the get method:

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 allows you to work with browser history as far as i understand it.


To get a better understanding on it, one must see the architecture of Selenium WebDriver.

Just visit https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol

and search for "Navigate to a new URL." text. You will see both methods GET and POST.

Hence the conclusion given below:

driver.get () 메서드는 내부적으로 Selenium Server Standalone에 Get 요청을 보냅니다. driver.navigate () 메소드는 Selenium Server Standalone에 Post 요청을 보냅니다.

도움이되기를 바랍니다.

참조 URL : https://stackoverflow.com/questions/5664808/difference-between-webdriver-get-and-webdriver-navigate

반응형