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

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

ru
Offline Offline

« : 17-03-2017 14:01 » 

У меня есть работающий кусок кода:
Код:
List<IWebElement> bitch = Browser.FindElements(By.CssSelector("a.p180.img_preloaded")).ToList(); //ищет все ссылки на фотографии в поиске
            for (int i = 0; i < bitch.Count; i++) // цикл , начинает перебирать фотографии на странице поиска
            {
                bitch[i].SendKeys(OpenQA.Selenium.Keys.Control + OpenQA.Selenium.Keys.Return); // кликает по фотографиям на стр поиска открывая их в новой вкладке//SendKeys(OpenQA.Selenium.Keys.Control + OpenQA.Selenium.Keys.Return); //textBox1.AppendText(bitch[i].Text); // \r\n начинать с новой строки
                Browser.SwitchTo().Window(Browser.WindowHandles.Last()); // переключается на новую открытую вкладку
                System.Threading.Thread.Sleep(3000); // задержка фикс
               
                IWebElement chat = Browser.FindElement(By.Id("chatnow")); chat.Click(); // ищет кнопку "написать"
                System.Threading.Thread.Sleep(3000);


                try
                {

                    IWebElement chat1 = Browser.FindElement(By.Id("nomessage-incompatible-link")); chat1.Click(); //ищет и кликает кнопке "уверены что хотите написать"
                    IWebElement message = Browser.FindElement(By.ClassName("wysiwyg_editor"));
                    message.SendKeys("Привет "); //ищет и вбивает данные в строку сообщения

                }
                catch
                {
                    List<IWebElement> zar1 = Browser.FindElements(By.CssSelector("#chat_list div.message_text")).ToList(); //ищет все сообщения в открытом диалоге 
                    int stat = 1;
                    if (stat <= zar1.Count) // если сообщений больше или равно 1 , то закрываем окно
                    {
                        IWebElement close = Browser.FindElement(By.Id("messages_close")); close.Click(); System.Threading.Thread.Sleep(3000); //закрывает диалог
                    }
                    else
                    {

                        IWebElement message = Browser.FindElement(By.ClassName("wysiwyg_editor")); //ищет окно для отправки сообщения
                        bool status = message.Displayed; // отображается ли окно для отправки на экране
                        if (status == true)
                        {
                            message.SendKeys("Привет! "); //пишет сообщение
                        }
                        else
                        {
                            System.Threading.Thread.Sleep(3000);
                            IWebElement close = Browser.FindElement(By.Id("messages_close")); close.Click(); //закрывает диалог
                        }
                    }
                }




                Browser.Close(); //закрывает окно
                Browser.SwitchTo().Window(Browser.WindowHandles[0]); // возвращается в окно с поиском




            }
Но работает только без вот этого куска:
Код:
  List<IWebElement> zar1 = Browser.FindElements(By.CssSelector("#chat_list div.message_text")).ToList(); //ищет все сообщения в открытом диалоге 
                    int stat = 1;
                    if (stat <= zar1.Count) // если сообщений больше или равно 1 , то закрываем окно
                    {
                        IWebElement close = Browser.FindElement(By.Id("messages_close")); close.Click(); System.Threading.Thread.Sleep(3000); //закрывает диалог
                    }
                    else
                    {
когда я вставляю его в часть try или catch цикл перестаёт работать доходит до этой части кода и останавливается, а через минуту вот такое сообщение об ошибке:
http://www.imgzilla.ru/image.uploads/2017-03-17/default-9987cd4a0bb7cf0e8e6cf390e1e932bb.png

Добавлено через 4 минуты и 49 секунд:
отдельно этот кусок работает. Использую Selenium.
Не понимаю причину ошибки

Добавлено через 2 часа, 46 минут и 41 секунду:
Код:
List<IWebElement> zar1 = Browser.FindElements(By.CssSelector("#chat_list div.message_text")).ToList();
                int kolichestvo = 1;
                if ( kolichestvo <= zar1.Count)
                {
                    IWebElement message = Browser.FindElement(By.ClassName("wysiwyg_editor"));
                    message.SendKeys("Привет истина ");
                }
                else
                {
                    IWebElement message = Browser.FindElement(By.ClassName("wysiwyg_editor"));
                    message.SendKeys("Привет ложь");

 Почему не работает такое условие,  если не найдено ни одного zar1 ? Count должен возвращать количество найденых обЪектов, если обЪектов нет значит он возвращает 0 или нет?

Если есть один 1 объект пишется сообщение "Привет истина". если не найдено ни одного , то зависает и выдаёт ошибку (см. прикреплённый фаил)

* ошибка2.png (51.92 Кб - загружено 760 раз.)
« Последнее редактирование: 17-03-2017 16:53 от leonidius » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines