xPath первый раз находит, потом нет

Kurator

Client
Регистрация
10.05.2016
Сообщения
80
Благодарностей
2
Баллы
8
Подскажите почему, когда я выделяю текст на странице и кликаю - поиск по xPath. Атрибут innerhtml в нем само прописывает значение - Prove your not a Robot - Solve the Captcha First. Добавляю в проект- находит. Как только страница перезагружается - не находит. Использовал все 3 варианта:
//*[@id="ozRIq"]/div[@class='box-body']/center/small[1]
//*[@id="ozRIq"]/div[1]/center/small[1]
/html/body/div[8]/div[5]/div[1]/section[2]/div[2]/div[9]/div[1]/div[1]/div[1]/div[2]/div[1]/center[1]/form/div[1]/center/small[1]
Номера формы и документа было рано 0. Я менял на -1. Ничего не помогает.
Все эти значения зенно сам вписывает в первый раз.
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
482
Благодарностей
183
Баллы
43
очень похоже на то что эта часть в пути динамическая и меняется при обновлении странице. Можете обновить страницу и сравнить с первым вариантом.
Если есть динамические атрибуты, то через них составлять путь xpath, соответственно, нельзя
 
  • Спасибо
Реакции: Kurator

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
так не будет работать. xpath надо всегда составлять руками. еще ни разу не видел работающего автоматически созданного xpath :-)
 
  • Спасибо
Реакции: mr.green и Kurator

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 442
Благодарностей
1 287
Баллы
113
Подскажите почему, когда я выделяю текст на странице и кликаю - поиск по xPath. Атрибут innerhtml в нем само прописывает значение - Prove your not a Robot - Solve the Captcha First. Добавляю в проект- находит. Как только страница перезагружается - не находит. Использовал все 3 варианта:
//*[@id="ozRIq"]/div[@class='box-body']/center/small[1]
//*[@id="ozRIq"]/div[1]/center/small[1]
/html/body/div[8]/div[5]/div[1]/section[2]/div[2]/div[9]/div[1]/div[1]/div[1]/div[2]/div[1]/center[1]/form/div[1]/center/small[1]
Номера формы и документа было рано 0. Я менял на -1. Ничего не помогает.
Все эти значения зенно сам вписывает в первый раз.
Зенка показывает просто пример, а не рабочий вариант, поэтому вам нужно самому научится писать дорогу оптимальную, а в вашем случае цепляется много лишнего, в соответсвии с которым, после обновы страницы, работать не будет.
 
  • Спасибо
Реакции: Kurator

Kurator

Client
Регистрация
10.05.2016
Сообщения
80
Благодарностей
2
Баллы
8
очень похоже на то что эта часть в пути динамическая и меняется при обновлении странице. Можете обновить страницу и сравнить с первым вариантом.
Если есть динамические атрибуты, то через них составлять путь xpath, соответственно, нельзя
Да, действительно, id поменялся.(
До этого делал стандартным поиском - правая кнопка по тексту- Создать проверку по наличию выделенного текста. Но такой поиск работает не стабильно. Т.е. не находит периодически. Как быть, подскажите. Я так проверяю появилась ли hCaptcha на странице. Может есть какой-то другой способ? Если ставить просто кубик разгадывания hCaptcha, то он долго думает, если даже нет hCaptcha
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
482
Благодарностей
183
Баллы
43
Да, действительно, id поменялся.(
До этого делал стандартным поиском - правая кнопка по тексту- Создать проверку по наличию выделенного текста. Но такой поиск работает не стабильно. Т.е. не находит периодически. Как быть, подскажите. Я так проверяю появилась ли hCaptcha на странице. Может есть какой-то другой способ? Если ставить просто кубик разгадывания hCaptcha, то он долго думает, если даже нет hCaptcha
нужно просто составить правильный путь xPath... Путь, в котором не будет лишних, динамических элементов
 
  • Спасибо
Реакции: Kurator

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 088
Благодарностей
126
Баллы
63

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
Тоже хочу знать, почему этот способ хуже
выделение текста ? если про него речь, то там есть одна особенность, он может выдать положительный ответ даже если текст не виден. например где то прописан в скрипте, но еще не выведен, а проверка выдаст ложный сигнал. а если искать тот же текст по xpath , например //*[contains(text(),'ля-ля тополя')] , то в c# можно сделать проверку ширины и высоты найденного элемента и таким образом гарантированно узнать что такой текст есть и он виден. а если заморочится то можно даже проверить не перекрыт ли он другим элементом. вот и все отличие :-)
 

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