Ожидание элемента xPath

tom_dwan

Пользователь
Регистрация
09.08.2019
Сообщения
52
Благодарностей
3
Баллы
8
Парни знаю что такая тема была, но не совсем такая.
Столкнулся с проблемой что когда пишу шаблон в C# есть такая проблема:

Написал код например:
Tab Active = instance.ActiveTab;
Active.Navigate("www.bado.com","www.google.com");
Active..FindElementByXPath("//li/a[@href='/radar/distance']", 0); - нажатие на кнопку DISTANCE
И вот какая проблема код выполняется даже если клика по элементу не было. Подскажите как это исправить варианты вижу такие:
Если нету клика ждём ещё 5-10 сек опять нету опять ждём после 3 попытки выводим ошибку.
Вот нашел код:


//атрибуты окна которого нужно дождаться
var he = instance.ActiveTab.FindElementByXPath("//li/a[@href='/radar/distance']", 0);
he.Click();
for (int i=0;i<10;i++) //10 - время ожидания элемента
{
if (he.IsVoid) Thread.Sleep(1000);
}

Код клацает на мой элемент когда элемент есть на странице, но когда я его скрываю ухожу на другую вкладку, а потом возвращаюсь на вкладку с элементом шаблон не клацает на него вопрос Почему? Что дописать или изменить? В коде.
Думаю проблема актуальная для новичков.
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Написал код например:
Tab Active = instance.ActiveTab;
Active.Navigate("www.bado.com","www.google.com");
Active..FindElementByXPath("//li/a[@href='/radar/distance']", 0); - нажатие на кнопку DISTANCE
1) После Navigate - пропиши ожидание загрузки страницы, и поиск элемента (thread.sleep - он так нормально работает? Я обычно полный путь пишу - system.threading.thread.sleep);

2) С элементами.. а) прописывай не var he, a HtmlElement he; (причина - так яснее видно, что с этим элементом можно сделать в C#)
b) поиск элемента и клик по элементу нужно внести внутрь твоего цикла for, т.е. нужно переопределение есть ли элемент на странице или нет.

3) Про переходы на другие вкладки и возвраты - недавно у человека та же проблема была. Самое простое решение - переопределять HtmlElement или HtmlElementCollection : прямо перед взаимодействием с ним. Т.е. если ушел со вкладки - вернувшись найди их ещё раз.

____
Но я всего-лишь новичок, могут камни полететь ))
 

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