2015-03-31 47 views
0

我有一個for循環,點擊一個網站並測試鏈接是否正常工作。當循環爲空時元素不可見

但是當我輸入一個沒有鏈接的頁面時,測試顯然失敗。 但我不知道如何停止測試,而不是失敗。

這是我真正的for循環簡單

public void TestT2Links() 
{ 
    int count = LinkElements.Count; 
    for (int i = 3; i < count; i++) 
    { 
     PropertiesCollection.driver.FindElements(By.TagName("a"))[i].Click(); 
    } 
} 

從VS

錯誤日誌

結果消息:

OpenQA.Selenium.ElementNotVisibleException : element not visible 
    (Session info: chrome=40.0.2214.93) 
    (Driver info: chromedriver=2.10.267521,platform=Windows NT 6.1 SP1 x86_64) 

結果堆棧跟蹤:

at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) 
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) 
at OpenQA.Selenium.Remote.RemoteWebElement.Click() 

如何任何想法我噓LD阻止它?

+0

做一些錯誤處理,看是否元素單擊 – Sayse 2015-03-31 08:59:18

回答

1

添加清晰視野檢查點擊之前:

var e = PropertiesCollection.driver.FindElements(By.TagName("a")); 
for (int i = 3; i < e.Count; i++) { 
    if (e[i].Displayed) { 
     e[i].Click(); 
    } 
} 
+0

我明白一個道理之前,它應該工作是可見的...但我遇到了與系統.ArgumentOutOfRangeException現在。 在else語句中放了一個break,但循環仍然崩潰。 – Dymond 2015-03-31 09:34:29

+1

@Dymond我敢打賭,這是因爲頁面上所有鏈接的count數量與用「a」標記的鏈接數量之間的斷開。看看編輯,它應該修復'ArgumentOutOfRangeException'。 – dasblinkenlight 2015-03-31 09:40:04

+0

謝謝。我先遇到了一些麻煩,但現在它的功能就像一種魅力:) – Dymond 2015-03-31 12:15:42