Selen ist ein Open-Source-Framework, bitte sehen Sie sich den Quellcode here an.
GoToUrl()
in RemoteNavigator.cs definiert:
/// <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();
}
Also im Grunde driver.Navigate().GoToUrl();
Sets driver.Url
unter der Haube, und ich sehe keinen Unterschied gibt.
Jedoch ist driver.Navigate().GoToUrl()
flexibler, der entweder string
oder Uri
als Parametertypen Senden erlaubt, während nur Zeichenkette zulässig ist, wenn sie durch driver.Url
Einstellung.
Um Ihre zweite Frage, die Quellcode zeigt, dass driver.Navigate().Refresh()
Browser zu aktualisieren, fragt während driver.Url
Browser sagt zu navigieren. Diese beiden sind also grundlegend verschieden. Weitere Einzelheiten finden Sie in Difference between Refresh and Navigate function in browser control?
Wenn Sie die Seite aktualisieren möchten, verwenden Sie bitte driver.Navigate().Refresh();
Refresh()
definiert in RemoteNavigator.cs:
/// <summary>
/// Refresh the browser
/// </summary>
public void Refresh()
{
// driver.SwitchTo().DefaultContent();
this.driver.InternalExecute(DriverCommand.Refresh, null);
}
driver.Url
in RemoteWebDriver.cs definiert:
public string Url
{
...
set
{
...
try
{
this.Execute(DriverCommand.Get, parameters);
}
...
}
}
Mit Blick auf den Quellcode sieht es wie die Antwort auf meine seco nd Frage ist ja - der Code sagt immer dem Fahrer, die Seite neu zu laden, auch wenn die URL nicht geändert hat. –
@steve: Ja, es hängt davon ab, wie Sie die Worte "reload" und "refresh" definieren. ;) –