Welches ist die bevorzugte Methode zum Öffnen einer URL (und gibt es Unterschiede hinter den Kulissen zwischen):
driver.Url = "http://example.com";
oder
driver.Navigate().GoToUrl("http://example.com");
Wenn der Treiber bereits auf dieselbe Seite zeigt, wird durch erneutes Einstellen der URL die Seite aktualisiert?
d.h.
...
driver.Url = "http://example.com";
driver.Url = "http://example.com"; //does this reload the page?
...
FWIW Ich verwende den Chrome driver chromedriver.exe, aber es scheint keine verwaltete Assembly zu sein (ich habe versucht, sie mit ILSpy zu öffnen, aber kein Glück).
Selenium ist ein Open-Source-Framework, schauen Sie sich also bitte den Quellcode an hier .
GoToUrl()
ist definiert 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();
}
Also legt driver.Navigate().GoToUrl();
im Grunde driver.Url
unter die Haube und ich sehe dort keinen Unterschied.
Allerdings ist driver.Navigate().GoToUrl()
flexibler, wodurch entweder string
oder Uri
als Parametertypen gesendet werden können, während bei der Einstellung durch driver.Url
nur Zeichenfolgen zulässig sind.
Zu Ihrer zweiten Frage zeigt der Quellcode, dass driver.Navigate().Refresh()
Browser zum Aktualisieren auffordert, während driver.Url
Browser zum Navigieren auffordert. Diese beiden unterscheiden sich also grundlegend. Weitere Informationen finden Sie unter nterschied zwischen Aktualisieren und Navigieren in der Browsersteuerung?
Wenn Sie die Seite aktualisieren möchten, verwenden Sie bitte driver.Navigate().Refresh();
Refresh()
ist definiert in RemoteNavigator.cs :
/// <summary>
/// Refresh the browser
/// </summary>
public void Refresh()
{
// driver.SwitchTo().DefaultContent();
this.driver.InternalExecute(DriverCommand.Refresh, null);
}
driver.Url
ist definiert in RemoteWebDriver.cs :
public string Url
{
...
set
{
...
try
{
this.Execute(DriverCommand.Get, parameters);
}
...
}
}