У меня есть работающий кусок кода:
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 объект пишется сообщение "Привет истина". если не найдено ни одного , то зависает и выдаёт ошибку (см. прикреплённый фаил)