我正在使用Selenium Webdriver为一个asp.net mvc网站编写集成测试。我用的是C语言,但如果你能用C语言或Java语言回答,我将不胜感激。
我已经附上了html表和生成的html代码。
我想用webdriver点击groupname“bcde”的编辑链接。要单击链接,我需要id(2138)而不是组名(bcde)。
我试过了

driver.FindElements(By.XPath("//tr[contains(td[2], 'bcde')]/td[1]").ToList()[0])

但它给出2137,id of abcde(按字母顺序第一组包含查找字符串“bcde”)。
我需要与组名“bcde”完全匹配的id 2138。
<table class="table">
           <tr>
            <th>
                Group id
            </th>
            <th>
                Group Name
            </th>
            <th>

            </th>
    </tr>

        <tr>
            <td>
                2137
            </td>
            <td>
                abcde
            </td>
            <td>
                        <span><a href="/Group/Edit/2137" id="lnkGroupEdit">Edit</a> | </span>
                        <span> <a href="/Instrument?groupID=2137" id="lnkGroupDelete">Delete</a> | </span>
            </td>
        </tr>
        <tr>
            <td>
                2138
            </td>
            <td>
                bcde
            </td>
            <td>
                        <span><a href="/Group/Edit/2138" id="lnkGroupEdit">Edit</a> | </span>
                        <span> <a href="/Delete?groupID=2138" id="lnkGroupDelete">Delete</a> | </span>
             </td>
        </tr>
        <tr>
            <td>
                2139
            </td>
            <td>
                a bcde f
            </td>
            <td>
                        <span><a href="/Group/Edit/2139" id="lnkGroupEdit">Edit</a> | </span>
                        <span> <a href="/Instrument?groupID=2139" id="lnkGroupDelete">Delete</a> | </span>
            </td>
        </tr>
</table>

最佳答案

试试这个。

//tr/td[contains(.,'2137')]/..//span/a[.='Edit']

注意.参见我的解释here..中的xpath允许您轻松地在html层次结构中来回移动。我使用contains是因为td的值有whitespaces
编辑
试试这个。好像是个等待的问题
By byXpath = By.XPath("//tr/td[contains(.,'2137')]/..//span/a[.='Edit']");
new WebDriverWait(Driver,TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists(byXpath)).Click();

第二次编辑
最有趣的是,您试图单击的a标记包含各自的id。因此,根据我的理解,最好的解决方法是使用下面的xpath
//a[contains(@href,'2138')][.='Edit']

09-16 03:22