C# Selenium WebDriver-如何查找表中行的索引

C# Selenium WebDriver-如何查找表中行的索引,c#,html,selenium,C#,Html,Selenium,我想通过Selenium查找表(10行)中的行索引: <table _ngcontent-c4="" class="table table-striped table-br" xpath="1"> <tr _ngcontent-c4="" plan-id="41220451" xpath="1"> <tr _ngcontent-c4="" plan-id="41220452" xpath="1"> <tr _ngcontent-c4="" plan-id

我想通过Selenium查找表(10行)中的行索引:

<table _ngcontent-c4="" class="table table-striped table-br" xpath="1">
<tr _ngcontent-c4="" plan-id="41220451" xpath="1">
<tr _ngcontent-c4="" plan-id="41220452" xpath="1">
<tr _ngcontent-c4="" plan-id="41220453" xpath="1">
<tr _ngcontent-c4="" plan-id="41220454" xpath="1">
<tr _ngcontent-c4="" plan-id="41220455" xpath="1">
<tr _ngcontent-c4="" plan-id="41220456" xpath="1">
<tr _ngcontent-c4="" plan-id="41220457" xpath="1">
<tr _ngcontent-c4="" plan-id="41220458" xpath="1">
<tr _ngcontent-c4="" plan-id="41220459" xpath="1">
<tr _ngcontent-c4="" plan-id="41220460" xpath="1">

问题是找到包含
plan\u id=“41220457”(index=7)


我尝试使用几个定位器,但没有成功。

让我们以列表的形式查找所有表行

var table = chrome.FindElement(By.TagName("table"));
var tr = table.FindElements(By.TagName("tr"));

让我们以列表的形式查找所有表行

var table = chrome.FindElement(By.TagName("table"));
var tr = table.FindElements(By.TagName("tr"));
解决办法如下:
driver.FindElement(By.XPath(“/html[1]/body[1]/sk-app[1]/sk-internal-template[1]/div[1]/jhi-plan[1]/div[2]/div[1]/table[1]/tbody[1]/tr[contains(@plan-id,“+plan-id+”))]/td[8]/div[1]/button[1]/span[1]

通过以下方式解决:
driver.FindElement(By.XPath(“/html[1]/body[1]/sk-app[1]/sk-internal-template[1]/div[1]/jhi-plan[1]/div[2]/div[1]/table[1]/tbody[1]/tr[contains(@plan-id,“+plan-id+”))]/td[8]/div[1]/button[1]/span[1]

您可以使用下面的代码简化代码

driver.FindElement(By.XPath("//table[@xpath='1']//tr[contains(@plan-id, '" + plan_id + "')]/td[8]/div[1]/button[1]/span[1]")).Click();
如果第8列中只有一个按钮,可以进一步简化该行,如下所示

driver.FindElement(By.XPath("//table[@xpath='1']//tr[contains(@plan-id, '" + plan_id + "')]/td[8]//button/span[1]")).Click();
顺便说一句,如果有人想获得原始查询中发布的索引号,那么您可以使用驱动程序实例运行下面的javascript

document.evaluate("//table[@xpath='1']//tr[@plan-id='41220457']/preceding-sibling::tr", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength+1
屏幕截图:


您可以使用下面的代码简化代码

driver.FindElement(By.XPath("//table[@xpath='1']//tr[contains(@plan-id, '" + plan_id + "')]/td[8]/div[1]/button[1]/span[1]")).Click();
如果第8列中只有一个按钮,可以进一步简化该行,如下所示

driver.FindElement(By.XPath("//table[@xpath='1']//tr[contains(@plan-id, '" + plan_id + "')]/td[8]//button/span[1]")).Click();
顺便说一句,如果有人想获得原始查询中发布的索引号,那么您可以使用驱动程序实例运行下面的javascript

document.evaluate("//table[@xpath='1']//tr[@plan-id='41220457']/preceding-sibling::tr", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength+1
屏幕截图:


您能展示一下您到目前为止尝试了什么吗?全局问题是单击表中的按钮。我必须点击第七排的按钮。我试过这样做:driver.FindElement(By.XPath(“//…/table[@class='table striped table br']/tbody/tr[contains(@plan id,'41220457'))]/td[8]/div[1]/button[1]”。Click();你能展示你迄今为止做了什么吗?全局问题是单击表中的按钮。我必须单击第七行的按钮。我试过这个:driver.FindElement(By.XPath(“//…”/table[@class='table striped table br']/tbody/tr[contains(@plan id,'41220457')]/td[8]/div[1]/button[1]”。单击();确定,然后,如何查找此行的索引?for(int i=0;i