Я использую цикл for для циклического перемещения по динамическому списку, и некоторые опции пропускаются, когда мне нужно выполнить Catch внутри него.
for (int index = 0; index < exports.Rows.Count; index++)
{
try
{
var reportListBox = driver.FindElement(By.ClassName("rlbList"));
IWebElement reportItem = reportListBox.FindElement(By.CssSelector($"#ctl00_ContentPlaceHolder_lstReports_i{index}"));
reportItem.Click();
exportBTNClick();
}
catch (Exception)
{
// If Error Message appears then Click ok
driver.FindElement(By.XPath("//span[@class='rwInnerSpan'][contains(text(),'OK')]")).Click();
driver.FindElement(By.XPath("//span[@class='rwInnerSpan'][contains(text(),'OK')]")).Click();
}
}
Код показывает цикл For и будетСоберите информацию из списка, затем цель reportItem.Click();
состоит в том, чтобы нажать на опцию, которая отображается на экране.
Метод exportBTNClick();
нажимает кнопку на экране и генерирует отчет.Если отчет не может быть сгенерирован (т. Е. Нет действительных данных), он должен перейти к улову, где он дважды нажимает кнопку ОК.
В таком случае происходит то, что нажимается кнопка ОК, и следующий отчетбыть экспортированным на 2 или 3 места перед последним выбором (т. е. в случае сбоя отчета 2 следует перейти к отчету 3, но вместо этого собирается сообщить отчет 4 или 5)