使用selenium c#在一行中单击操作链接(删除、查看、编辑)

本文关键字:编辑 操作 链接 删除 单击 查看 一行 selenium 使用 | 更新日期: 2023-09-27 18:08:04

我想问一些关于如何单击我在表中的操作链接的帮助。

HTML页面如下所示:

Lebron James     | EDIT | VIEW | DELETE
Chris Paul       | EDIT | VIEW | DELETE
Carmelo Anthony  | EDIT | VIEW | DELETE

html格式如下所示。

<tr>
     <td>Lebron James</td>
     <td>
          <a href="/Player/Edit/282">Edit</a>
          <a href="/Player/View/282">View</a>
          <a href="/Player/Delete/282">Delete</a>
     </td>
</tr>

我尝试了下面的语法。

  1. webDriver.FindElement(By.XPath("//td[contains(text(), 'Chris Paul')]" + webDriver.FindElement(By.CssSelector("//td/a[contains(href='"/Player/Delete/)]")))).Click();
  2. webDriver.FindElement(ByXPath("//td[contains(text(), 'Carmelo Anthony')]//td/a(href="/Player/Delete")")).Click();

上面的语法可能不准确,我已经尝试了一段时间,但他们看起来类似。我能够在行中找到该名称,但无法单击与该名称并行的操作链接。

使用selenium c#在一行中单击操作链接(删除、查看、编辑)

您应该尝试使用xpathfollowing-sibling轴如下:-

  • 点击Edit链接:-

    webDriver.FindElement(By.XPath(".//td[text() = 'Lebron James']/following-sibling::td/a[text() = 'Edit']")).click();
    
  • 点击View链接:-

    webDriver.FindElement(By.XPath(".//td[text() = 'Lebron James']/following-sibling::td/a[text() = 'View']")).click();
    
  • 点击Delete链接:-

    webDriver.FindElement(By.XPath(".//td[text() = 'Lebron James']/following-sibling::td/a[text() = 'Delete']")).click();
    

获得此选择器的另一种方法是:

//td[text()='Lebron James']/..//a[contains(@href, 'Edit')]

或者如果你喜欢文本:

//td[text()='Lebron James']/..//a[text()='Edit']

通过这种方式,您将搜索包含您需要的文本的td,导航到父tr,并在此找到包含您需要的href值或文本的文本的链接。

如果你不关心名字,你可以使用css:
(href * = '编辑']