2014-09-11 35 views
10
bir URL açmak için tercih edilen bir yöntemi (ve arasındaki arka planda herhangi bir fark vardır)

.Selenyum driver.Url GoToUrl()

driver.Url = "http://example.com"; 

veya

driver.Navigate().GoToUrl("http://example.com"); 

Ayrıca, sürücü zaten aynı sayfaya işaret ediyorsa, Url'yi ikinci kez ayarlayarak sayfanın yenilenmesine neden olur mu?

yani

... 
driver.Url = "http://example.com"; 
driver.Url = "http://example.com"; //does this reload the page? 
... 

FWIW Krom sürücü chromedriver.exe kullanıyorum ama (ben ILSpy ama hiçbir şans ile açarak denedim) yönetilen bir derleme olarak görünmüyor.

cevap

21

Selenium açık kaynak kodlu bir çerçevedir, bu nedenle lütfen kaynak koduna bir göz atın (here). Kaputun altındaki

/// <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(); 
} 

Yani temelde driver.Navigate().GoToUrl(); setleri driver.Url ve orada bir fark göremiyorum:

GoToUrl()RemoteNavigator.cs tanımlanmıştır.

Ancak driver.Navigate().GoToUrl()driver.Url ile ayarlanırken yalnızca dize izin verirken, parametre tipleri gibi string veya Uri ya da gönderen sağlayan, daha esnektir. driver.Url gezinmek için tarayıcıları söyler ederken ikinci soru için


, kaynak kodu, driver.Navigate().Refresh() yenilemek için tarayıcıları sorar göstermektedir. Yani bu ikisi temelde farklı.

/// <summary> 
/// Refresh the browser 
/// </summary> 
public void Refresh() 
{ 
    // driver.SwitchTo().DefaultContent(); 
    this.driver.InternalExecute(DriverCommand.Refresh, null); 
} 

driver.UrlRemoteWebDriver.cs tanımlanır::

public string Url 
{ 
    ... 

    set 
    { 
     ... 

     try 
     { 
      this.Execute(DriverCommand.Get, parameters); 
     } 
     ... 
    } 
} 
Daha fazla ayrıntı için, sayfayı yenilemek istiyorsanız Difference between Refresh and Navigate function in browser control?

, driver.Navigate().Refresh();

Refresh()RemoteNavigator.cs tanımlanır kullanın lütfen bakınız

+0

Sağladığınız kaynak koda baktığımda, seco'mın cevabı gibi görünüyor nd soru evet - kod her zaman Url değişmemiş olsa bile, sürücüyü sayfayı yeniden yüklemesini söyler. –

+0

@steve: Evet, "yeniden yükle" ve "yenilen" sözcüklerini nasıl tanımladığınıza bağlı. ;) –