Il selenio è un framework open source, quindi si prega di dare un'occhiata al codice sorgente here.
GoToUrl()
è definito 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();
}
Quindi, in pratica driver.Navigate().GoToUrl();
set driver.Url
sotto il cofano e non vedo una differenza c'è.
Tuttavia, driver.Navigate().GoToUrl()
è più flessibile, che permette l'invio sia string
o Uri
come tipi di parametri, mentre solo stringa viene consentita quando si imposta attraverso driver.Url
.
Per la seconda domanda, il codice sorgente mostra che driver.Navigate().Refresh()
chiede browser per aggiornare, mentre driver.Url
dice browser per navigare. Quindi questi due sono fondamentalmente diversi. Per maggiori dettagli, vedere Difference between Refresh and Navigate function in browser control?
Se si desidera aggiornare la pagina, si prega di utilizzare driver.Navigate().Refresh();
Refresh()
è definito in RemoteNavigator.cs:
/// <summary>
/// Refresh the browser
/// </summary>
public void Refresh()
{
// driver.SwitchTo().DefaultContent();
this.driver.InternalExecute(DriverCommand.Refresh, null);
}
driver.Url
è definito in RemoteWebDriver.cs:
public string Url
{
...
set
{
...
try
{
this.Execute(DriverCommand.Get, parameters);
}
...
}
}
fonte
2014-09-11 08:04:19
Guardando il codice sorgente che hai fornito sembra la risposta al mio seco La domanda è sì - il codice dice sempre al driver di ricaricare la pagina, anche se l'Url non è cambiato. –
@steve: Sì, dipende da come si definiscono le parole "ricaricare" e "aggiornare". ;) –