Как создать цикл, который увеличивает tr на 1 с максимум 100 раз, используя CssSelector в C # - PullRequest
1 голос
/ 29 апреля 2019

Итак, в основном у меня есть таблица из 100 строк на веб-странице, каждая строка содержит кнопку, я хочу написать цикл, который увеличит значение tr в CssSelector на 1 с максимумом в 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();

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Я бы выполнил поиск, чтобы найти все элементы, содержащие тег '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()
}

Я не помню, использовал ли я Count или Length () в первой строке для Forпетля в прошлом.Прошло несколько лет с тех пор, как я использовал C #, поэтому простите за любой плохой синтаксис, но это должно сработать.Вы можете добавить время ожидания, чтобы убедиться, что элементы видны, прежде чем начать поиск, добавьте проверку, что rowElements [2] не является нулевым, прежде чем пытаться щелкнуть, и вы можете также обернуть это в блок try / catch.

0 голосов
/ 29 апреля 2019

Используйте простой цикл.

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...