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

标签 c# selenium selenium-webdriver

将 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();

关于c# - webdriver - 获取特定 div 中包含的所有类名称的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25847171/

相关文章:

webdriver - 如何使用 Selenium Server 2.20 获取执行服务器名称或地址

javascript - 如何制作ajax typeahead

selenium - 使用 Selenium IDE Firefox 插件的截图

java - 如何使用 Selenium 单击 href 链接

java - 如何使用 Selenium Java 在表格或 div 内滚动?

php - 使用 Selenium Facebook PHP Webdriver 在 chrome 中打开新标签

c# - 什么样的 RSASignaturePadding 与 PKCS#8 key 一起使用?

c# - 周期性处理中的膨胀线程问题

c# - foreach计算多个数组

javascript - Selenium Python Javascript 执行