如何定位跨度相同class的元素?

How to locate an element with the same span class?

在 table 中有多个这样的元素:<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>

这里还有一个:

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

谢谢。

你需要做这样的事情:

// 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
}

这将 return 货币为 class 的所有元素。如果您想更具体一点,即:您只想要具有货币 class 的 span 元素,您将需要使用 OpenQA.Selenium.Support 包并执行 ByAll:

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

或者只检查第一个示例中的 element.TagName