2016-05-05 134 views
0

我有一個響應式網站,它包含36個按鈕。第一眼看去,我們只能看到12個按鈕,我需要驗證他們的文本值,我知道如何做到這一點。但問題是我需要點擊下一個按鈕,直到它不可見。那麼我怎樣才能在c#中使用selenium呢。Selenium webdriver - 如何點擊下一個按鈕,直到無法找到C#中的下一個按鈕#

此外,當點擊下一步時,我們需要將按鈕的文本存儲在列表或數組中,以便我可以將所有列表添加到新列表中並進行比較。

看看下面的代碼,我試圖

while (respRightNav.Displayed) 
     { 
      IList<IWebElement> sportsBtn = Driver.FindElements(By.CssSelector(".sports-buttons-responsive>ul li[class='sport-button']")); 
      foreach (var item in sportsBtn) 
      { 
       string btnText = item.Text.Replace(System.Environment.NewLine, ""); 
       if (btnText == btnText.ToUpper()) 
       { 
        Console.WriteLine("Sports Button : " + btnText + " is In Upper Case"); 
       } 
       else 
       { 
        Assert.Fail("Sports Button Text is not Upper Case for : " + btnText); 
       } 
      } 

      respRightNav.Click(); 
      if (respRightNav.Displayed.Equals(false)) 
      { 
       break; 
      } 

現在上面的工作,但我被困在當下一步按鈕不可用我仍然需要上述foreach循環用於獲取文本(如果(respRightNav運行。 Displayed.Equals(假)))。意味着我需要運行Foreach循環

任何幫助,將不勝感激。

+0

發佈一些代碼將有助於有人在這裏;幫你。 –

+0

@DevrajGadhavi請檢查我的更新代碼,讓我知道如何才能打破方法之前運行foreach? – vic

回答

0

你可以檢查與while環路「.Displayed」值:

IWebElement button; 
while((button = driver.FindElementByXPath("//input[.='Next']")).Displayed) { 
    button.Click(); 
    ... 

} 

或用FindElementsByXPath在一個單一的呼叫匹配可見元素:

ReadOnlyCollection<IWebElement> buttons; 
while((buttons = driver.FindElementsByXPath("//input[.='Next' and not(contains(@class,'none'))]")).Count > 0) { 
    buttons[0].Click(); 
    ... 

} 
+0

@Florernt你可以看到更新的問題,並建議我回答。 – vic

相關問題