Чтение из динамического списка на экране и некоторые опции пропускаются при выполнении catch? - PullRequest
0 голосов
/ 01 марта 2019

Я использую цикл 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)

1 Ответ

0 голосов
/ 01 марта 2019

Была обнаружена проблема, что вызывался метод экспорта, а затем сообщение об ошибке для данных не было доступно.Так как сообщение об ошибке появлялось только для следующего элемента в последовательности, тогда как на экране появилось сообщение об ошибке из последнего экспорта, оно переходило к части catch оператора.

Новый код выглядит так:

for (int index = 0; index < exports.Rows.Count; index++)
        {
            var reportListBox = driver.FindElement(By.ClassName("rlbList"));
            IWebElement reportItem = reportListBox.FindElement(By.CssSelector($"#ctl00_ContentPlaceHolder_lstReports_i{index}"));

            reportItem.Click();
            exportBTNClick();

            IWebElement modal = driver.FindElement(By.XPath("//span[@class='rwInnerSpan'][contains(text(),'OK')]"));                  
            if (modal.Displayed == true)
            {

                // 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();

            }


        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...