使用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异常。我该如何实现呢?
答案 0 :(得分:0)
使用following-sibling
和last()
:
//table[@id='MainContent_gvInvoices']/td[. = '120109524']/following-sibling::td[last()]
答案 1 :(得分:0)
您可以使用By.CssSelector
和href
,我想零行索引为零,所以如果您有更多
By.CssSelector("a[href*='Edit$0']");