2017-01-23 3 views
2

В таблице есть несколько элементов: <span class="currency"> 0</span>. Значение> 0 < - это значение формулы, которое изменяется каждый раз. Что было бы лучшим способом, чтобы найти следующий элемент из HTML:Как найти элемент с тем же классом span?

<td class="alignLeft label">Initial</td> 
<td class="alignRight readOnly"> 
<span class="currency"> 0</span> 
</td> 
<td></td> 

Другой элемент расположен в этой части HTML:

<td class="alignLeft label">Initial</td> 
<td class="alignRight readOnly"> 
<span class="currency"> 0</span> 
</td> 
<td></td> 
<td class="alignRight readOnly"> 
<span class="currency"> 0</span> 
</td> 
<td></td> 

Еще один здесь:

<td class="alignLeft label">Initial</td> 
<td class="alignRight readOnly"> 
<span class="currency"> 0</span> 
</td> 
<td></td> 
<td class="alignRight readOnly"> 
<span class="currency"> 0</span> 
</td> 
<td></td> 
<td class="alignRight readOnly"> 
<span class="currency"> 0</span> 
</td> 

Благодарю.

+0

Вы уже пробовали код? –

+1

вы хотите получить их все или только первый или что именно? – mosaad

+0

Есть ли несколько пролетов? Можете ли вы поместить в них ID? – Gilles

ответ

0

Вам нужно сделать что-то вроде этого:

// this will return a list containing all elements with the currency class 
var currencyElements = driver.FindElements(By.ClassName("currency")); 

foreach (var element in currencyElements) 
{ 
    // access each individual element one by one 
    if (element.Text == "0") 
     // do something 
} 

Это возвращает все элементы с классом валюты. Если вы хотите быть более конкретным, то есть: вы хотите только охватывать элементы с классом валюты, вам нужно будет использовать OpenQA.Selenium.Support пакет и сделать ByAll:

var byAll = new OpenQA.Selenium.Support.PageObjects.ByAll(new By[] 
      { 
       By.ClassName("currency"), 
       By.TagName("span") 
      }); 

или вместо просто проверить element.TagName в первом примере.

+0

Спасибо @ Gilles, это отличное решение. –

Смежные вопросы