如何使用C#中的CSSSELECTOR创建一个以最大100时间为1的循环



因此,基本上我在网页上有一个100行的表100次。

到目前为止,我有一个非常容易接受的过程,但非常昂贵。

我的代码的示例:

driver.FindElement(By.CssSelector("#Main > tbody > tr:nth-child(1) > td:nth-child(2)")).Click();
driver.FindElement(By.CssSelector("#Main > tbody > tr:nth-child(2) > td:nth-child(2)")).Click();
driver.FindElement(By.CssSelector("#Main > tbody > tr:nth-child(3) > td:nth-child(2)")).Click();

至100 ...

我想一个循环做这样的事情:

driver.FindElement(By.CssSelector("#Main > tbody > tr:nth-child(1)[i++] > td:nth-child(2)")).Click();

我会进行搜索以找到所有包含'tr'标签的元素,然后循环通过这些元素。如果您想以最大100的最大停止,则可以将其添加到循环的状态

ReadOnlyCollection<IWebElement> allRows = driver.FindElements(By.CssSelector("#Main > tbody > tr")
for(int i = 0 ; i < allRows.Count && i < 100 ; i++){
  WebElement rowElements = allRows[i].FindElements(By.CssSelector("td"))
  rowElements[2].click()
}

我不记得我过去是否在第一行上使用了计数或长度((。自从我使用C#以来已经有几年了,所以请原谅任何不良语法,但这应该解决问题。您可以添加等待,以确保在开始搜索之前可见元素,添加一个检查[2]在尝试单击之前尚未null的检查,并且您可能还想将其包装在try/Catch Block中。

使用简单的循环。

string locator;
for(int i=1; i<=100; i++){
locator = "#Main > tbody > tr:nth-child("+i+") > td:nth-child(2)";
driver.FindElement(By.CssSelector(locator)).click();
}

最新更新