Я работаю с таблицей на веб-странице с X строками. Каждая строка представляет запрашивающего, либо просящего о предоставлении чего-либо, либо об отзыве. Целью этой автоматизации является автоматическое утверждение предоставления или отзыва. Следующий код работает, но, как ни странно, только при первом появлении предоставления или отзыва соответственно:
var table = driver.FindElement(By.XPath(@"//*[@id=""span_pending_approvals""]/form/table/tbody"));
var rows = table.FindElements(By.TagName("tr"));
var rowCount = 1;
foreach (var row in rows)
{
if (row.Text.Contains("Grant"))
{
var requester = row.Text.Split(' ')[3];
row.FindElement(By.XPath("//input[@value='approve']")).Click();
}
else if (row.Text.Contains("Revoke"))
{
row.FindElement(By.XPath("//input[@value='revoke']")).Click();
}
rowCount++;
}
Выход составляет:
Amy - Grant[X] Wait[]
Andy - Grant[] Wait[]
Anthony - Grant[] Wait[]
Brad - Revoke[X] Wait[]
Beth - Revoke[] Wait[]
Bort - Revoke[] Wait[]
Когда я хочу:
Amy - Grant[X] Wait[]
Andy - Grant[X] Wait[]
Anthony - Grant[X] Wait[]
Brad - Revoke[X] Wait[]
Beth - Revoke[X] Wait[]
Bort - Revoke[X] Wait[]
Мысли о том, почему это работает только при первом появлении каждого параметра? Когда я перехожу через отладчик, я вижу .Click (); обрабатывается, как и ожидалось, для каждой строки, но фактически регистрируется на веб-странице только для первых появлений «Предоставить» или «Отменить».