2016-11-21 39 views
0

DataList從的XPath的動態列表C#

的最後一個元素從上面的圖片,我添加新的數據被添加到最後一頁驗證數據,但可以有類似的名字,我需要覈實數據使用如圖所示的ID。所以我試圖找出從ID存儲文本值的方式,並且當添加新數據時,它應該驗證上次新添加的ID。有任何想法嗎?

 int i = 1; 
     bool found = false; 
     string ID; 
     try 
     { 

      IWebElement LastPage = Driver.driver.FindElement(By.XPath("html/body/div[4]/div/div/div[2]/table/tbody/tr[8]/td[1]")); 
      LastPage.Click(); 
      for (i = 1; i <= 10; i++) ; 
      { 
       ID= Driver.driver.FindElement(By.XPath("html/body/div[4]/div/div/div[2]/table/tbody/tr[" + i + "]/td[1]")).Text; 
       if (??) 
      } 
+0

我看不到您的圖片。 – Buaban

回答

2

正如@越南,範表示,採用最後是一個好主意,你也可以使用一個相關的XPath,如:

//table/tbody/tr[last()-1]/td 

,你不需要使用[1],因爲你正在使用FindElement,而不是FindElements並返回找到的第一個元素。

-1

你並不需要使用for循環得到最後一個項目,只是把最後的()來選擇最終tr元素

你的情況

IWebElement lastElement = Driver.driver.FindElement(By.XPath("(html/body/div[4]/div/div/div[2]/table/tbody/tr)[last()]/td[1]")); 
ID = lastElement.Text; 

附加:因爲最後一行是總數,所以你必須改變它之前的行=> [last() - 1]

+0

使用以根(HTML)標記開頭的XPath是非常糟糕的做法。不要這樣做。 – JeffC

+0

對不起,我想你會錯誤的想法,我只是從@Harsh thakkar重新複製XPath。 –

+0

@JeffC,我在這裏指的是last()函數,而不是絕對或相對XPath。 –