使用div标签instad和tag构造的表

时间:2017-01-18 06:24:55

标签: html selenium-webdriver

在我的selenium项目中,我有一个仅使用div标记而不是<td><tr>标记构建的网络表。在这种情况下,如何在这样的表中找到行数。

1 个答案:

答案 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;
                        }
                    }
                }

            }
        }