Selenium C# - 如何根据同一行中的另一个单元格单击单元格中的链接?

时间:2015-08-05 14:04:04

标签: c# selenium xpath selenium-webdriver

使用Selenium WEbdriver和C#,我试图根据另一个单元格中的值单击单元格中的链接。这是基本的HTML:

<table id="MainContent_gvInvoices">
<tbody>
<tr>
    <td>120109524</td>
    <td>12345678</td>
    <td><a href="javascript:__doPostBack('ctl00$MainContent$gvInvoices','Edit$0')">Edit</a></td>
</tr>

因此,在上面的HTML中,第一个单元格就是一个客户ID。同一行中的最后一个单元格是名为&#39;编辑的链接。可能存在多个具有不同Customer ID的行。我需要根据客户ID单击“编辑”链接。到目前为止,我没有运气试过这个:

public IWebElement testtable { get { return Driver.FindElement(By.Id("MainContent_gvInvoices")); } }
public IList<IWebElement> rows { get { return testtable.FindElements(By.CssSelector("tbody tr td")); } }
public IWebElement Edit { get { return Driver.FindElement(By.XPath("//*[@id='MainContent_gvInvoices']/tbody/tr[text() = '120109524']/td[3]/a")); } }

在此之后,Edit.Click()抛出nusuchelement异常。我该如何实现呢?

2 个答案:

答案 0 :(得分:0)

使用following-siblinglast()

//table[@id='MainContent_gvInvoices']/td[. = '120109524']/following-sibling::td[last()]

答案 1 :(得分:0)

您可以使用By.CssSelectorhref,我想零行索引为零,所以如果您有更多

,则必须更改
By.CssSelector("a[href*='Edit$0']");