C# Selenium XPath查找的元素比DOM中实际的元素多

C# Selenium XPath查找的元素比DOM中实际的元素多,c#,html,unit-testing,selenium,xpath,C#,Html,Unit Testing,Selenium,Xpath,我尝试循环DOM中的每个表行元素,并执行字符串断言,以查看它是否包含所需的文本。当我调试代码并查看变量tableRows的计数时,它显示它包含158个项目,而实际页面上的项目几乎没有那么多。我做错了什么 C#: [测试] 公共无效筛选器ByCompanyTest() { 常量字符串过滤器=“公司”; var table=this.Driver.FindElement(By.ClassName(“索引表”); var tableRows=table.FindElements(By.XPath(“/

我尝试循环DOM中的每个表行元素,并执行字符串断言,以查看它是否包含所需的文本。当我调试代码并查看变量tableRows的计数时,它显示它包含158个项目,而实际页面上的项目几乎没有那么多。我做错了什么

C#:

[测试]
公共无效筛选器ByCompanyTest()
{
常量字符串过滤器=“公司”;
var table=this.Driver.FindElement(By.ClassName(“索引表”);
var tableRows=table.FindElements(By.XPath(“//tr”);
对于(var i=1;i
HTML:


#
标题
2.
标题
中等
活跃的
2014年7月19日(3次变更)
比尔·比林顿
9
把这东西修好!
中等
活跃的
2014年7月23日(1次变更)
比尔·比林顿

由比尔·比林顿登记 10 试验 中等 活跃的 2014年7月22日(0次变更) 比尔·比林顿
XPath需要更多的帮助来告诉它上下文(即在元素中搜索):

请注意。这将把查询过滤到该表中的
tr
元素

需要注意的另一点是,这可以在没有XPath的情况下完成:

var tableRows=table.FindElements(按.TagName(“tr”))


我也将提到,在性能方面,您可能会发现通过XPath特别是针对XPath(即“强> >不/强”,围绕整个批次进行循环)将更快、更高性能。在XPath表达式的中间,

<代码> //< /代码>意味着在之前出现的代码“>//”的子孙之间搜索。代码>/
在XPath表达式的开头表示在根节点的后代之间搜索;i、 e.搜索整个文档。这就是为什么需要以
/
开始XPath<代码>表示当前上下文节点。
[Test]
public void FilterByCompanyTest()
{
    const string filter = "Company";

    var table = this.Driver.FindElement(By.ClassName("index-table"));
    var tableRows = table.FindElements(By.XPath("//tr"));

    for (var i = 1; i < tableRows.Count; i++) {
        StringAssert.Contains(filter, this.Driver.FindElement(By.XPath("//tr[" + i + "]/td[6]")).Text);
    }
}
    <div class="table-responsive index-table">
    <table class="table">
        <thead>
            <tr>
                <th>#</th>
                <th class="ticket-title">Title</th>
                <th>


                    <a href="?companyID=-1&amp;technicianID=-1&amp;statusID=0&amp;typeID=&orderBy=priorityAsc">
                        Priority
                        <span class="unordered"></span>
                    </a>
                </th>
                <th>


                    <a href="?companyID=-1&amp;technicianID=-1&amp;statusID=0&amp;typeID=&orderBy=statusAsc">
                        Status
                        <span class="unordered"></span>
                    </a>
                </th>
                <th>


                    <a href="?companyID=-1&amp;technicianID=-1&amp;statusID=0&amp;typeID=&orderBy=dueDateAsc">
                        Due Date
                        <span class="unordered"></span>
                    </a>
                </th>
                <th>


                    <a href="?companyID=-1&amp;technicianID=-1&amp;statusID=0&amp;typeID=&orderBy=companyAsc">
                        Company
                        <span class="unordered"></span>
                    </a>
                </th>
                <th>


                    <a href="?companyID=-1&amp;technicianID=-1&amp;statusID=0&amp;typeID=&orderBy=technicianAsc">
                        Technician
                        <span class="unordered"></span>
                    </a>
                </th>
                <th></th>
            </tr>
        </thead>
        <tbody>
                <tr data-id="2">
                    <td>2</td>
                    <td class="ticket-title">
                                                Title
                    </td>
                    <td>Medium</td>
                    <td>Active</td>
                    <td>7/19/2014<br /> <small>(3 changes)</small></td>
                    <td><a href="#" class="modal-open" data-modal="company-details-modal" data-url="/companies/details/1612">Company</a></td>
                    <td>
Bill Billington                        
                            <span class="glyphicon glyphicon-check"></span>
                    </td>
                    <td>
                        <a href="#" class="modal-open btn btn-sm btn-success" data-modal="edit-modal" data-url="/{controller}/edit/2"><span class="glyphicon glyphicon-edit"></span></a>
                        <a href="#" class="modal-open btn btn-sm btn-info" data-modal="log-modal" data-url="/{controller}/log/2"><span class="glyphicon glyphicon-list-alt"></span></a>
                        <a href="#" class="modal-open btn btn-sm btn-warning" data-modal="addtime-modal" data-url="/{controller}/addtime/2"><span class="glyphicon glyphicon-time"></span></a>
                    </td>
                </tr>
                <tr data-id="9">
                    <td>9</td>
                    <td class="ticket-title">
 <span class="work-on-ticket-note-icon-tickets" data-toggle="tooltip" data-placement="right" data-trigger="hover" title="test"></span>                                                 Fix this thing!
                    </td>
                    <td>Medium</td>
                    <td>Active</td>
                    <td>7/23/2014<br /> <small>(1 change)</small></td>
                    <td><a href="#" class="modal-open" data-modal="company-details-modal" data-url="/companies/details/1604">Company</a></td>
                    <td>
    Bill Billington                        
                                <span class="glyphicon glyphicon-check"></span>
                                    <br /><small>Checked In By Bill Billington</small>
                        </td>
                        <td>
                            <a href="#" class="modal-open btn btn-sm btn-success" data-modal="edit-modal" data-url="/{controller}/edit/9"><span class="glyphicon glyphicon-edit"></span></a>
                            <a href="#" class="modal-open btn btn-sm btn-info" data-modal="log-modal" data-url="/{controller}/log/9"><span class="glyphicon glyphicon-list-alt"></span></a>
                            <a href="#" class="modal-open btn btn-sm btn-warning" data-modal="addtime-modal" data-url="/{controller}/addtime/9"><span class="glyphicon glyphicon-time"></span></a>
                        </td>
                    </tr>
                    <tr data-id="10">
                        <td>10</td>
                        <td class="ticket-title">
                             <span class="work-on-ticket-note-icon-companies" data-toggle="tooltip" data-placement="right" data-trigger="hover" title="This is a work on ticket note for a company!"></span>                         Test 
                        </td>
                        <td>Medium</td>
                        <td>Active</td>
                        <td>7/22/2014<br /> <small>(0 changes)</small></td>
                        <td><a href="#" class="modal-open" data-modal="company-details-modal" data-url="/companies/details/1">Company (Provider)</a></td>
                        <td>
        Bill Billington                        
                            </td>
                            <td>
                                <a href="#" class="modal-open btn btn-sm btn-success" data-modal="edit-modal" data-url="/{controller}/edit/10"><span class="glyphicon glyphicon-edit"></span></a>
                                <a href="#" class="modal-open btn btn-sm btn-info" data-modal="log-modal" data-url="/{controller}/log/10"><span class="glyphicon glyphicon-list-alt"></span></a>
                                <a href="#" class="modal-open btn btn-sm btn-warning" data-modal="addtime-modal" data-url="/{controller}/addtime/10"><span class="glyphicon glyphicon-time"></span></a>
                            </td>
                        </tr>
                </tbody>
            </table>
        </div>
var tableRows = table.FindElements(By.XPath(".//tr"));