【问题标题】:C# - Selenium - Chromedriver - How to find element in class named the same as another classC# - Selenium - Chromedriver - 如何在与另一个类同名的类中查找元素
【发布时间】:2019-09-24 23:22:47
【问题描述】:

我有元素:

<li class="aaa"><div class='bbb'>..content1</div></li >
<li class="aaa"><div class='bbb'>..content2</div></li >
<li class="aaa"><div class='bbb'>..content3</div></li >
...
<li class="aaa"><div class='bbb'>..content4</div></li >

通过以下方式查找类:

var AllClasses= driver.FindElements(By.CssSelector("li[class='aaa']"));

然后,我正在循环,并尝试检查指定元素的内容:

for (int gr = 0; gr <= AllClasses.Count();gr++) 
{
   var NumberMembers = AllClasses[gr].FindElement(By.XPath("//div[@class='bbb']"));
} 

但它总是从第一个 li 类中找到我只有“bbb”。我认为它没有从“FindElements”的集合中指定 li 但在整个文档中搜索。

你能告诉我该怎么做吗?

【问题讨论】:

    标签: c# html .net selenium selenium-chromedriver


    【解决方案1】:

    您可以简单地使用 div,因为所有 div 具有相同的类名。

    css 选择器将是:div.bbb

    var AllClasses= driver.FindElements(By.CssSelector("div.bbb"));  
    
    for (int gr = 0; gr <= AllClasses.Count();gr++) 
    {
       var NumberMembers = AllClasses[gr].Text;
       Console.WriteLine(NumberMembers);
    } 
    

    【讨论】:

    • 好的,但我认为 li 中的元素是正确找到的,因为它们每个都有不同的{Element (id = xxxxxxxxxx)}
    • @Kamil :虽然你还没有发布 id :) 。我认为你应该试试这个定位器。我已经用 print 语句更新了代码。
    • 好吧,我不明白。你建议不要管aaabbb。抱歉,是我的错。好的,我现在就试试 :)
    • 是的,因为所有的 div 都有相同的类名。
    • 是的,你可以。只要类名不变,就可以。
    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 2021-03-05
    • 2023-01-03
    • 2015-07-12
    • 2019-05-25
    • 2021-08-09
    • 2018-07-28
    • 1970-01-01
    相关资源
    最近更新 更多