Вопрос по поиску xpath

lutic

Client
Регистрация
20.01.2024
Сообщения
53
Благодарностей
33
Баллы
18
Добрый вечер

Через обычный поиск находит //View/Button/following-sibling::*[1]/self::TextView

1730846942761.png

а через код не хочет находить

C#:
var driver = instance.DroidInstance.AppiumDriver;
var elem = driver.FindElementByXPath("//View/Button/following-sibling::*[1]/self::TextView");

if (elem == null){
    throw new Exception("Not found");
}else{
    project.SendInfoToLog(elem.GetAttribute("text"));
}
Какую я ошибку совершаю, не могли бы вы подсказать?
Спасибо за внимание
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 318
Баллы
113
Добрый вечер

Через обычный поиск находит //View/Button/following-sibling::*[1]/self::TextView

Посмотреть вложение 127187

а через код не хочет находить

C#:
var driver = instance.DroidInstance.AppiumDriver;
var elem = driver.FindElementByXPath("//View/Button/following-sibling::*[1]/self::TextView");

if (elem == null){
    throw new Exception("Not found");
}else{
    project.SendInfoToLog(elem.GetAttribute("text"));
}
Какую я ошибку совершаю, не могли бы вы подсказать?
Спасибо за внимание
По неизвестной мне причине, c# хпаз не воспринимает аттрибуты, точнее то что идет до [] в вашем случае придется учится самому складывать хпаз что бы вместо //View/Button... - вышло //*[@bla='blabla']/*[@bla='blabla'] , возможно админы подскажут другой вариант обхода такого бага @Sergodjan
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
473
Благодарностей
371
Баллы
63
Через обычный поиск находит //View/Button/following-sibling::*[1]/self::TextView
 
  • Спасибо
Реакции: j2082192 и lutic

lutic

Client
Регистрация
20.01.2024
Сообщения
53
Благодарностей
33
Баллы
18
Спасибо, так нашло
C#:
var driver = instance.DroidInstance.AppiumDriver;
var elem = driver.FindElementByXPath("//android.webkit.WebView//android.view.View//android.widget.Button/following-sibling::*[1]/self::android.widget.TextView");

if (elem == null){
    throw new Exception("Not found");
}else{
    project.SendInfoToLog(elem.GetAttribute("text"));
}
 
  • Спасибо
Реакции: j2082192

MaxTraff

Client
Регистрация
16.06.2024
Сообщения
52
Благодарностей
24
Баллы
8
Остается только ради спортивного интереса понять, почему так было сделано... Копипасть из окна помощника в С# код с
driver.FindElementByXPath работать не будет пока не приведешь к полному формату классов. При этом если получить XML стурктуры (droid.Hierarchy.GetLayout()), загрузить его в XmlDocument и искать SelectSingleNode/SelectNodes, то работает без полных имен классов т.к. ищет по именам тегов, как и предполагалось =))

Хотелось бы и версию xpath из коробки более современную иметь, что бы пользоватся более удобным селектором и не городить костыли в C#
 

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