Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как правильно написать условие  (Прочитано 11706 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
leonidius
Новенький

ru
Offline Offline

« : 14-03-2017 18:49 » 

Не могу понять как правильно писать условие у меня есть две таких строчки кода:
Код: (C#)
          IWebElement chat1 = Browser.FindElement(By.Id("nomessage-incompatible-link"));
           chat1.Click();

            IWebElement chat = Browser.FindElement(By.Id("chatnow"));
             chat.Click();
Первая и вторая  строчка ищет на странице сайта кнопку и нажимает её нужно сделать так, чтобы  если первая кнопка "Chat1" не нашлась, то нажималась  вторая "Chat".  Если не затруднит напишите как должно выглядеть условие, если можно в нескольких вариантах например через if else, ||, &&.
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 15-03-2017 11:01 » 

Побуду телепатом: используется Selenium (вообще-то, неплохо было бы это указать).
Документация говорит, что если элемент не найден, генерируется исключение NoSuchElementException. Если всё так, то его-то и надо перехватывать и обрабатывать, без всяких if.
Записан
leonidius
Новенький

ru
Offline Offline

« Ответ #2 : 15-03-2017 16:09 » 

ага сработало Но получается только для 1-го исключения если писать try и catch без указания ошибки . Я хочу сделать 2-а  написал такой код и ничего не выходит. Обрабатывается try за ним всегда обрабатывается  " catch (WebDriverException) " почему? ведь я указал  ошибку которая вылезала во время отладки почему программа не пропускает её и не переходит к последнему catch?
Код: (C#)
                try
                {
                    IWebElement chat1 = Browser.FindElement(By.Id("nomessage-incompatible-link")); chat1.Click();
                    IWebElement message = Browser.FindElement(By.ClassName("wysiwyg_editor"));
                    message.SendKeys("Привет ");
                    IWebElement message1 = Browser.FindElement(By.Id("send_but")); message1.Click();
                }
                catch (WebDriverException)
                {
                    System.Threading.Thread.Sleep(3000);
                    Browser.Close();
                }
                catch
                {
                    IWebElement message = Browser.FindElement(By.ClassName("wysiwyg_editor"));
                    message.SendKeys("Привет ");
                    IWebElement message1 = Browser.FindElement(By.Id("send_but")); message1.Click();
                    System.Threading.Thread.Sleep(3000);
                    Browser.Close();
                 }
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 16-03-2017 20:30 » 

Потому что надо изучить иерархию классов исключений: класс WebDriverException является родительским (точнее, прародительским) от отношению к NoSuchElementException. Перехват WebDriverException срабатывает и для всех его потомков, поэтому постоянно туда и попадает. Надо сначала более специальные типы перехватывать.

Я бы вообще сделал метод-обёртку вокруг кода "FindElement->SendKeys->FindElement->Click", т.к. эта часть очевидно дублируется.
Записан
leonidius
Новенький

ru
Offline Offline

« Ответ #4 : 17-03-2017 14:13 » 

а что такое обертка ? не подскажете где про неё читать для C# на русском. Я загуглил , что то не понятно мало информации и примеров
Записан
darkelf
Молодой специалист

ua
Offline Offline

« Ответ #5 : 17-03-2017 15:46 » new

leonidius, наверное имелось в виду одинаковый код не повторять по нескольку раз, а выносить в отдельные функции/методы.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines