Selenium是一個開源框架,所以請看源代碼here。
GoToUrl()
在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();
}
所以基本上driver.Navigate().GoToUrl();
套driver.Url
引擎蓋下,我看不出有什麼差別。
然而,driver.Navigate().GoToUrl()
是更靈活的,它允許發送或者string
或Uri
作爲參數類型,同時通過設置driver.Url
當只有字符串被允許。
你的第二個問題,源代碼顯示了driver.Navigate().Refresh()
要求瀏覽器刷新,而driver.Url
告訴瀏覽器來瀏覽。所以這兩個是根本不同的。有關詳細信息,請參閱Difference between Refresh and Navigate function in browser control?
如果要刷新頁面,請使用driver.Navigate().Refresh();
Refresh()
在RemoteNavigator.cs定義:
/// <summary>
/// Refresh the browser
/// </summary>
public void Refresh()
{
// driver.SwitchTo().DefaultContent();
this.driver.InternalExecute(DriverCommand.Refresh, null);
}
driver.Url
在RemoteWebDriver.cs定義:
public string Url
{
...
set
{
...
try
{
this.Execute(DriverCommand.Get, parameters);
}
...
}
}
看看你提供的源代碼看起來像我的seco的答案nd問題是肯定的 - 代碼總是告訴驅動程序重新加載頁面,即使Url沒有改變。 – 2014-09-12 03:13:15
@steve:是的,這取決於你如何定義單詞「重新加載」和「刷新」。 ;) – 2014-09-12 11:23:35