Клик на элемент отрабатывыает через раз, C#

Yatsyk

Client
Регистрация
29.11.2015
Сообщения
10
Благодарностей
0
Баллы
1
Доброго времени суток! Столкнулся с проблемой во время клика на элемент при работе с ВК. Нужно чтобы производился клик на раздел "Мои фотографии" в левом сайд-баре. Вот код который нормально производит клик:
Код:
var MyPage = instance.ActiveTab.FindElementByAttribute("a", "innerhtml", "<span class=\"left_label inl_bl\">Моя Страница</span>", "regexp", 0);
var MyPhotos = instance.ActiveTab.FindElementByAttribute("a", "innerhtml", "<span class=\"left_label inl_bl\">Фотографии</span>", "regexp", 0);
// Возвращаемся к себе на страницу
MyPage.RiseEvent("click", "Full");
// Переходим в меню "Мои фотографии"
MyPhotos.RiseEvent("onclick", "Full");
return MyPhotos.GetAttribute("innerhtml");
Но как только к данному коду добавляю паузу, клик в большинстве случаев не производится и работает "через раз". Вот код с паузой:
Код:
var MyPage = instance.ActiveTab.FindElementByAttribute("a", "innerhtml", "<span class=\"left_label inl_bl\">Моя Страница</span>", "regexp", 0);
var MyPhotos = instance.ActiveTab.FindElementByAttribute("a", "innerhtml", "<span class=\"left_label inl_bl\">Фотографии</span>", "regexp", 0);
// Возвращаемся к себе на страницу
MyPage.RiseEvent("click", "Full");
// ВЫдерживаем паузу
System.Threading.Thread.Sleep(5000);
// Переходим в меню "Мои фотографии"
MyPhotos.RiseEvent("onclick", "Full");
return MyPhotos.GetAttribute("innerhtml");
Когда клик не производится, значение innerhtml возвращается пустое. На стандартном кубике через конструктор действий все отрабатывает хорошо.
Подскажите пожалуйста, в чем может быть проблема?
 

Вложения

freeman

Client
Регистрация
31.07.2010
Сообщения
130
Благодарностей
138
Баллы
43
DOM дерево перестраивается и ссылка на элемент становится невалидной. По идее, первый вариант тоже неправильный, так как смена страницы может привести к изменению DOM модели. Делай поиск элемента непосредственно перед кликом.
 
  • Спасибо
Реакции: Yatsyk

deopl

Client
Регистрация
06.12.2011
Сообщения
656
Благодарностей
126
Баллы
43
делай так
("span", "innertext", "Моя\\ Страница", "regexp", 0)
 
  • Спасибо
Реакции: Yatsyk

Yatsyk

Client
Регистрация
29.11.2015
Сообщения
10
Благодарностей
0
Баллы
1
DOM дерево перестраивается и ссылка на элемент становится невалидной. По идее, первый вариант тоже неправильный, так как смена страницы может привести к изменению DOM модели. Делай поиск элемента непосредственно перед кликом.
:ay:
Спасибо большое, сделал поиск элемента непосредственно перед кликом - все работает без сбоев) Вот такой код получился:
Код:
// Возвращаемся к себе на страницу
var MyPage = instance.ActiveTab.FindElementByAttribute("a", "innerhtml", "<span class=\"left_label inl_bl\">Моя Страница</span>", "regexp", 0);
MyPage.RiseEvent("click", "Full");
// Выдерживаем паузу
System.Threading.Thread.Sleep(5000);
// Переходим в меню "Мои фотографии"
var MyPhotos = instance.ActiveTab.FindElementByAttribute("a", "innerhtml", "<span class=\"left_label inl_bl\">Фотографии</span>", "regexp", 0);
MyPhotos.RiseEvent("onclick", "Full");
делай так
("span", "innertext", "Моя\\ Страница", "regexp", 0)
Спасибо) Так тоже ищет элемент, но стабильно заработало когда сделал поиск перед кликом, а то опять через раз кликало) Вот так получилось:
Код:
// Возвращаемся к себе на страницу
var MyPage = instance.ActiveTab.FindElementByAttribute("span", "innertext", "Моя\\ Страница", "regexp", 0);
MyPage.RiseEvent("click", "Full");
// Выдерживаем паузу
System.Threading.Thread.Sleep(5000);
// Переходим в меню "Мои фотографии"
var MyPhotos = instance.ActiveTab.FindElementByAttribute("span", "innertext", "Фотографии", "regexp", 0);
MyPhotos.RiseEvent("onclick", "Full");
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)