0 votes
1 view
in DevOps and Agile by (19.8k points)

Which is the preferred method to open a Url (and are there any differences behind the scenes between):

driver.Url = "http://example.com";

or

driver.Navigate().GoToUrl("http://example.com");

Also, if the driver is already pointing at the same page, will setting the Url a second time cause the page to refresh?

i.e.

...

driver.Url = "http://example.com";

driver.Url = "http://example.com"; //does this reload the page?

...

FWIW I'm using the Chrome driver chromedriver.exe, but it doesn't appear to be a managed assembly (I tried opening it with ILSpy but no luck).

1 Answer

0 votes
by (63.4k points)

Selenium is an open-source framework, therefore please have a glance at the source code here.

GoToUrl() is defined in RemoteNavigator.cs:

/// <summary>

/// Navigate to a url for your test

/// </summary>

/// <param name="url">String of where you want the browser to go to</param>

public void GoToUrl(string url)

{

    this.driver.Url = url;

}

/// <summary>

/// Navigate to a url for your test

/// </summary>

/// <param name="url">Uri object of where you want the browser to go to</param>

public void GoToUrl(Uri url)

{

    if (url == null)

    {

        throw new ArgumentNullException("url", "URL cannot be null.");

    }

    this.driver.Url = url.ToString();

}

So primarily driver.Navigate().GoToUrl(); sets driver.Url under the hood and I don't see a difference there.

However, driver.Navigate().GoToUrl() is more flexible, which allows sending either string or Uri as parameter types, while the only string is allowed when setting through driver.Url.

To your second question, the source code shows that driver.Navigate().Refresh() will refresh the browser, while driver.Url tells the browser to navigate. So these two are fundamentally different.

If you wish to refresh the page, please use driver.Navigate().Refresh();

Refresh() is defined in RemoteNavigator.cs:

/// <summary>

/// Refresh the browser

/// </summary>

public void Refresh()

{

    // driver.SwitchTo().DefaultContent();

    this.driver.InternalExecute(DriverCommand.Refresh, null);

}

driver.Url is defined in RemoteWebDriver.cs:

public string Url

{

    ...

    set

    {

        ...

        try

        {

            this.Execute(DriverCommand.Get, parameters);

        }

        ...

    }

}

Clearing the Selenium online certification exam will make you an expert in it's concepts and you can further get good job opportunities.. 

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...