есть сайты на одном движке, заметил вылеты, понял что из-за формы, нашел совет ставить -1, работало оно работало попало на один в котором номер формы 1, на нем вылетает.а подробнее по поводу не работы на некоторых сайтах?
как это проверить?может клик идёт не по тому объекту. Может есть объект с такими же атрибутами поисковыми, но в другой форме
Если это происходит иногда, то надо сделать слепки страниц и смотреть а чем они отличаются от тех где все ок кликает.При добавлении поста в блог кликать на "Edit HTML", но дело не только в этом, проблема в том что не может найти форму иногда не видит и других кнопок и полей.
Проблема проявилась совсем недавно, недели 2 назад все работало с номером формы 1.
как это сделать?Если это происходит иногда, то надо сделать слепки страниц и смотреть а чем они отличаются от тех где все ок кликает.
Сохраняем в файлы:как это сделать?
Записал. Как теперь все это сравнить? Там куча кода (46 000 символов в длину!), как понять в чем проблема?Сохраняем в файлы:
{-Page.Source-}
{-Page.Dom-}
Очень просто, вы ищете какойто элемент, он должен быть там-то, он есть все ок. Его нет, вы смотрите исходники, и видите что есть на месте этого элемента, толи страница не подгрузилась, толи у нее другая врестка, толи еще 100500 вариантов.Записал. Как теперь все это сравнить? Там куча кода, как понять в чем проблема?
Элемент есть и там и там.Очень просто, вы ищете какойто элемент, он должен быть там-то, он есть все ок. Его нет, вы смотрите исходники, и видите что есть на месте этого элемента, толи страница не подгрузилась, толи у нее другая врестка, толи еще 100500 вариантов.
Но у Вас уже есть информация чтобы понять, а в чем-же грабли.
<div><div>vasya</div></div>Элемент есть и там и там.
У меня стоят паузы, а если страница не догружается значит проблема зенно, что он переходит на другой экшн не дождавшись загрузки страницы.<div><div>vasya</div></div>
<div>vasya</div>
Элемент, есть и там и там, но в одном случае его найдет в другом нет.
А если все одинаково, то скорее всего вы пытаетесь искать до того как страница загрузиться полностью.
Попробуйте после перехода и до парсинга, такой сниппет:
http://zennolab.com/discussion/threads/raznica-v-vypolnenii-shablona-v-postere-i-pm.12331/#post-210040
for (int i = 0; i < 10 ; i++ ) // 10 спроб при потребі збільшуємо
{
var formload = instance.ActiveTab.FindElementByAttribute("span","innertext",@"datests","regexp", 0); //умови для пошуку елемента - копіюємо з конструктора действий
if (!formload.IsVoid) // якщо елемент не пустий, тобто він присутній на сторінці
{
return "ok"; // посилаємо ок в перемінну що вказана в *Положить результат в переменную* внизу вікна блока
}
else // інакше
{
System.Threading.Thread.Sleep(1000); // пауза на 1000 милисекунд тут при потребі збільшуємо паузу
}
}
throw new Exception(""); // не прогрузився елемент, завершуємо блок "Свой C# код" з помилкою!
Спасибо.пауза не завжди підходить.
Краще використовувати код який очікує появу потрібного елементу на сторінці
Код:for (int i = 0; i < 10 ; i++ ) // 10 спроб при потребі збільшуємо { var formload = instance.ActiveTab.FindElementByAttribute("span","innertext",@"datests","regexp", 0); //умови для пошуку елемента - копіюємо з конструктора действий if (!formload.IsVoid) // якщо елемент не пустий, тобто він присутній на сторінці { return "ok"; // посилаємо ок в перемінну що вказана в *Положить результат в переменную* внизу вікна блока } else // інакше { System.Threading.Thread.Sleep(1000); // пауза на 1000 милисекунд тут при потребі збільшуємо паузу } } throw new Exception(""); // не прогрузився елемент, завершуємо блок "Свой C# код" з помилкою!
Не помогло!<div><div>vasya</div></div>
<div>vasya</div>
Элемент, есть и там и там, но в одном случае его найдет в другом нет.
А если все одинаково, то скорее всего вы пытаетесь искать до того как страница загрузиться полностью.
Попробуйте после перехода и до парсинга, такой сниппет:
http://zennolab.com/discussion/threads/raznica-v-vypolnenii-shablona-v-postere-i-pm.12331/#post-210040
Потому-что условия очень расплывчатые, если не нашли по href ищем по InnerText, если не нашли по нему ищем просто имени тэга.Не помогло!
Проблема там только с номером формы, проверил это выставляя от -1 до 2 для разных сайтов. Только выставляешь нужный номер формы сразу!!! кликает там где надо!
Интересно, там четко прописано название элемента, но кликает хз по чему, но только не по нему.
Там же четкое значение Editor\HTML, почему эта дура кликает по имени пользователя?
Что такое вообще номер формы и как один и единственный!!! элемент может присутствовать сразу в нескольких формах, если программа кликает по разным ссылкам?
Еще странность. В конструкторе действий если указать номер формы как -1 и сделать поиск, то оно все верно находит, но при работе самого экшена кликает совсем по другим местам.
HtmlElement he = instance.ActiveTab.FindElementByXPath("//a[contains(@href,'login')]", 0);
if (he.IsVoid) throw new Exception("Елемент не найден");
he.Click();
Т.е. в этом экшене можно убрать все строки кроме InnerText ?Потому-что условия очень расплывчатые, если не нашли по href ищем по InnerText, если не нашли по нему ищем просто имени тэга.
Скинь мне штук несколько страниц в личку, и что тебе надо в них найти, я тебе сделаю запрос, это будет проще, а то гадание на кофейной гуще получается.Т.е. в этом экшене можно убрать все строки кроме InnerText ?
UPD Код выдает ошибку. Мне нужно искать "Editor\HTML" я вписал его вместо Login.