Ответ 1
Selenium - это среда с открытым исходным кодом, поэтому, пожалуйста, ознакомьтесь с исходным кодом здесь.
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
указывает браузеру перемещаться. Так что эти два принципиально разные. Для получения дополнительной информации см. Разница между функцией обновления и навигации в браузере?
Если вы хотите обновить страницу, используйте 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);
}
...
}
}