gpt4 book ai didi

c# - Selenium driver.Url 与 driver.Navigate().GoToUrl()

转载 作者:可可西里 更新时间:2023-11-01 03:06:35 32 4
gpt4 key购买 nike

打开 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 驱动程序 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() 更灵活,它允许发送 stringUri 作为参数类型,而通过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.UrlRemoteWebDriver.cs 中定义:

public string Url
{
...

set
{
...

try
{
this.Execute(DriverCommand.Get, parameters);
}
...
}
}

关于c# - Selenium driver.Url 与 driver.Navigate().GoToUrl(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25778228/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com