Urlを開くための推奨される方法は次のとおりです(また、舞台裏で違いがあります)。
driver.Url = "http://example.com";
または
driver.Navigate().GoToUrl("http://example.com");
また、ドライバーが既に同じページを指している場合、再度Urlを設定するとページが更新されますか?
つまり.
...
driver.Url = "http://example.com";
driver.Url = "http://example.com"; //does this reload the page?
...
FWIW Chrome driver chromedriver.exeを使用していますが、マネージアセンブリではないようです(ILSpyで開いてみましたが、運はありません)。
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
_を介して設定する場合は文字列のみが許可されます。
2番目の質問に対して、ソースコードはdriver.Navigate().Refresh()
がブラウザーに更新を要求し、_driver.Url
_がブラウザーに移動するように指示することを示しています。したがって、これら2つは根本的に異なります。詳細については、「 ブラウザコントロールの更新機能とナビゲート機能の違い?
ページを更新する場合は、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);
}
...
}
}
_