2016-07-29 6 views
0

問題は次のとおりです。ページ上のすべての要素を確認し、element.GetAttribute("class") == expectedClassを確認しようとしています。ここで IWebElementsのforeachループ内でStaleElementExceptionが発生するC#

var feedback = Driver.FindElements(AuctivaSalesPageModel.ViewFeedbackSelector); 
      var attempts = 0; 
      foreach (IWebElement element in feedback) 
      { 
       while (attempts < 3) 
       { 
        try 
        { 
         Assert.AreEqual("leaveFeed actionTaken", element.GetAttribute("class")); 
         attempts = 0; 
         break; 

        } 
        catch (StaleElementReferenceException) 
        { 
         Assert.AreEqual("leaveFeed actionTaken", element.GetAttribute("class")); 
         attempts = 0; 
         break; 
        } 
        catch (AssertionException) 
        { 
         System.Threading.Thread.Sleep(3000); 
         Driver.Navigate().Refresh(); 
         AuctivaSalesPage.WaitForElementVisible(Driver, AuctivaSalesPageModel.TotalNumberOfSalesSelector); 
         AuctivaSalesPage.ScrollToTop(); 
         AuctivaSalesPage.SelectNoFolder(); 
         attempts++; 
        } 

       } 

      } 

は、今私はStaleElementException上に読んでてきたコードであり、私はDOMは、リスト内の要素は常に古くなりリフレッシュしたかのように私のキャッチとアプローチを再試行は無用だと思います。私がここでやる必要があるのは、 Driver.FindElement()で要素を修正していますが、IWebElementsのforeachループでこの問題が発生していることです。再試行に失敗した特定の要素のセレクタを取得する方法がわかりません。 例外をキャッチしてリストを再構築し、foreachループ全体を再試行する必要がありますか?または私は

Assert.AreEqual("leaveFeed actionTaken", Driver.FindElement(By.someSelector(element.GetSelector)).GetAttribute("class"));

私はこのことができます願ってい

答えて

0

の線に沿って何かを行うことができますので、ループ内elementに特有のセレクタを抽出する方法がありますが、私は同様の問題を抱えていたし、取得することができました次のロジックを使用して、その周りに、最善のアプローチはそのことを認めたが、それは動作します:

var feedbackCount = Driver.FindElements(AuctivaSalesPageModel.ViewFeedbackSelector).Count(); 
var attempts = 0; 
for(var i = 0; i < feedbackCount; i++) 
{ 
    while (attempts < 3) 
    { 
     var element = Driver.FindElements(AuctivaSalesPageModel.ViewFeedbackSelector).ElementAt(i); 
     //Continue you logic here 
    } 
} 

・ホープこのヘルプは

+0

本当にありがとうございました '.ElementAt()'私が探していたまさにでした! –

+0

問題はありません。うれしいことです:) –

関連する問題