使用Selenium FindElements()选择多个div时没有获得正确的div id

时间:2017-03-01 15:52:06

标签: c# selenium selenium-webdriver selenium-chromedriver

我正在尝试使用div搜索指定XPath下的所有div iddiv id随机生成并且无法修复,因此使用部分ID方法进行搜索,因为div id的某些文字是常量。_ariaId_是id,它将是常量,数字将附加到它上面。 s trail。

HTML网页代码。

//some more HTML code before this. Trimmed for clarity.

<div tabindex="-1" data-convid="AAQkADBjMGZiZGFlLTE4ZmEtNGRlOS1iMjllLTJmOGZkNGRhZmIzNQAQAOTK5G8Pok9JkIMV8KU8bI4=" 
     data-time="2017-03-01T20:35:37+05:30" id="_ariaId_299">
</div>
<div tabindex="-1" data-convid="AAQkADBjMGZiZGFlLTE4ZmEtNGRlOS1iMjllLTJmOGZkNGRhZmIzNQAQAOTK5G8Pok9JkIMV8KU8bI4=" 
     data-time="2017-03-01T20:29:41+05:30" id="_ariaId_281">        
</div>
<div tabindex="-1" data-convid="AAQkADBjMGZiZGFlLTE4ZmEtNGRlOS1iMjllLTJmOGZkNGRhZmIzNQAQAHnhaFwb40sGj+pN9p736NE=" 
     data-time="2017-03-01T20:25:14+05:30" id="_ariaId_271">

代码我使用获取符合搜索条件的所有数据,其中也包含div id

IWebElement baseTable = driverGC.FindElement(By.ClassName("conductorContent"));
        // gets all table rows
        ICollection<IWebElement> rows = baseTable.FindElements
        (By.XPath("//*[@id='primaryContainer']/div[5]/div/div[1]/div/div[4]/div[3]
                  /div/div[1]/div/div/div/div[5]/div[4]/div[1]/div[3]/div[1]/div/div/div[2]
                  /div[starts-with(@id, '_ariaId_')]"));
        foreach (var row in rows)
        {
            //Do something....
        }

这为我提供了满足条件的所需倍数div 我的错误id预期

enter image description here

当前

调试时,在id。

中获取以下数据

enter image description here

我坚持这一点,不知道这些来自ids的地方。其他领域正确。

1 个答案:

答案 0 :(得分:2)

您看到的{Element(id=0.0xxxxxx)}不是HTML元素的ID,而是IWebElement的ID。

如果您想获取所有单个HTML元素的ID,请尝试使用

foreach(var row in rows) 
{
   string elementID = row.GetAttribute("id");
 }