在我的selenium项目中,我有一个仅使用div
标记而不是<td>
和<tr>
标记构建的网络表。在这种情况下,如何在这样的表中找到行数。
答案 0 :(得分:0)
您好可以提供示例表结构,以及您的html的外观。看起来你正在使用角度2控件。控件看起来像一个表,但如果你扫描它,它的所有嵌套div标签。在我只需要你的HTML结构之前我已经处理过这个问题,以便我可以发布解决方案。 如果您的表结构是这样的
<div>
<div>
<div></div>
<div></div>
<div></div>
</div>
<div>
<div></div>
<div></div>
<div></div>
</div>
<div>
<div></div>
<div></div>
<div></div>
</div>
</div>
public void IterateThroughDivTable(IWebElement tblParentObj)
{
var childCount = ((IJavaScriptExecutor)DriverContext.Driver).ExecuteScript("return arguments[0].childNodes.length; ", tblParentObj);
for (int i = 0; i < Convert.ToInt32(childCount); i++)
{
var rowDivTag = ((IJavaScriptExecutor)DriverContext.Driver).ExecuteScript("return arguments[0].childNodes["+i+"].tagName; ", tblParentObj);
//check to see if its a div tag else ignore it
if (rowDivTag.ToString() == "div")//this is your row
{
var tr = ((IJavaScriptExecutor)DriverContext.Driver).ExecuteScript("return arguments[0].childNodes[" + i + "]; ", tblParentObj);
//now try to find the nested div tag inside each tr div tag
foreach (IWebElement tc in (IEnumerable)tr)
{
var colDivTag = ((IJavaScriptExecutor)DriverContext.Driver).ExecuteScript("return arguments[0].childNodes[" + i + "].tagName; ", tc);
//check to see if its a div tag else ignore it
if (colDivTag.ToString() == "div")//this is your column in each row
{
//now this is each cell in the table
var divText = tc.Text;
}
}
}
}
}