2016-05-05 1 views
0

私は36個のボタンが含まれているレスポンシブなウェブサイトを持っています。一見すると12個のボタンしか見ることができず、私がそれを行う方法を知っている値。しかし、問題は私が見えなくなるまで次のボタンをクリックする必要があります。だから、どうすればC#のセレンでそれをすることができます。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; 
      } 

をしようとしたコードの下で

ルックは、今以上働いているが、次のボタンが、私はまだテキスト(IF(respRightNavを取得するため、foreachループ上で実行する必要が利用できないとき、私はにこだわっています。表示されます。一致(false)))。私はForeachループを実行する必要があることを意味します

助けていただければ幸いです。目に見える要素に一致する単一の呼び出しで

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

} 

またはFindElementsByXPathと::

+0

はあなたのコードの一部を投稿役立つだろう誰かがいる;助けます。 –

+0

@DevrajGadhavi私の更新されたコードをチェックして、方法を壊す前にforeachを実行する方法を教えてください。 – vic

答えて

0

あなたはwhileループで「.Displayed」の値をチェックすることができ

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

} 
+0

@Florernt最新の質問を見て、私に答えてもらえますか? – vic

関連する問題