2017-01-23 2 views
2

テーブルには、<span class="currency"> 0</span>のような複数の要素があります。 > 0 <の値は、毎回変わる数式の値です。何がHTMLから次の要素を見つけるための最善の方法だろう。同じスパンクラスの要素の検索方法は?

<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> 
ここ

もう1:

<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ありがとう、これは素晴らしいソリューションです。 –

関連する問題