Skip to main content
 首页 » 编程设计

c#之webdriver之获取特定 div 中包含的所有类名称的计数

2024年01月26日27yxwkf

将 webdriver 与 c# 结合使用,我试图获取特定下拉菜单(它不是选择元素)中包含的所有项目的计数。问题是,我的页面上还有许多其他元素包含相同的类名,所以我需要的是一种仅在特定 div 中过滤类名的方法。

这是我正在查看的代码示例:

<div id="DropDownMenu1"> 
<span class="drop-combobox"> 
<div class="drop-item-content">list item number 1</div></div> 
<div class="drop-item-content">list item number 2</div></div> 
<div class="drop-item-content">list item number 3</div></div> 
</span> 
</div> 

在我的整个页面中,我还会有像这样的额外下拉菜单(所有类名都相同 - 只是 div 的名称不同):

  <div id="DropDownMenu2"> 
    <span class="drop-combobox"> 
    <div class="drop-item-content">list item number 1</div></div> 
    <div class="drop-item-content">list item number 2</div></div> 
    <div class="drop-item-content">list item number 3</div></div> 
    </span> 
    </div> 
 
 <div id="DropDownMenu3"> 
    <span class="drop-combobox"> 
    <div class="drop-item-content">list item number 1</div></div> 
    <div class="drop-item-content">list item number 2</div></div> 
    <div class="drop-item-content">list item number 3</div></div> 
    </span> 
    </div> 

我已经能够使用(从内存中)像这样的东西得到一个计数:

driver.FindElements(By.ClassName("drop-item-content").Count()); 

问题是,我的计数返回了名称为“drop-item-content”的所有类,但我需要对包含在 1 个特定 div 中的所有类名进行计数。

我希望这是有道理的(我希望有人能提供帮助):)

非常感谢

请您参考如下方法:

您首先尝试获取具有 id 的孔元素,然后使用该元素进行过滤(在这种情况下为 div,因为您不想要它的跨度),然后使用类名。类名不是必需的因为你想要所有的 Div,以防选择器失败,使用它时不带类名。 CssSelector 必须工作。尝试下一行:

Driver.FindElements(By.CssSelector("#DropDownMenu3 div.drop-item-content").count();