Проблема с XPath. Как можно обойти?

nail2501

Client
Регистрация
19.04.2015
Сообщения
435
Благодарностей
35
Баллы
28
HtmlElement he = instance.ActiveTab.FindElementByXPath("//*[@id='page-manager']/ytd-search[starts-with(@class,'style-scope')]/div[@id='container']/ytd-two-column-search-results-renderer[starts-with(@class,'style-scope')]/div[@id='primary']/ytd-section-list-renderer[starts-with(@class,'style-scope')]/div[@id='contents']/ytd-item-section-renderer[starts-with(@class,'style-scope')]/div[@id='contents']/ytd-video-renderer[starts-with(@class,'style-scope')]/div[@id='dismissible']/div[starts-with(@class,'text-wrapper')]/div[@id='meta']/div[@id='title-wrapper']/h3[starts-with(@class,'title-БЛА-БЛА-БЛА')]/a[@id='video-title']", 1);

h3[starts-with(@class,'title-БЛА-БЛА-БЛА') -вот этот параметр меняется.
Можно ли использовать регулярки?
Если нет то как можно обойти????
По аттрибутам не ищет, надо именно через xpath
 
Последнее редактирование:

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 444
Благодарностей
1 287
Баллы
113
HtmlElement he = instance.ActiveTab.FindElementByXPath("//*[@id='page-manager']/ytd-search[starts-with(@class,'style-scope')]/div[@id='container']/ytd-two-column-search-results-renderer[starts-with(@class,'style-scope')]/div[@id='primary']/ytd-section-list-renderer[starts-with(@class,'style-scope')]/div[@id='contents']/ytd-item-section-renderer[starts-with(@class,'style-scope')]/div[@id='contents']/ytd-video-renderer[starts-with(@class,'style-scope')]/div[@id='dismissible']/div[starts-with(@class,'text-wrapper')]/div[@id='meta']/div[@id='title-wrapper']/h3[starts-with(@class,'title-БЛА-БЛА-БЛА')]/a[@id='video-title']", 1);

h3[starts-with(@class,'title-БЛА-БЛА-БЛА') -вот этот параметр меняется.
Можно ли использовать регулярки?
Если нет то как можно обойти????
По аттрибутам не ищет, надо именно через xpath
 
  • Спасибо
Реакции: nail2501

nail2501

Client
Регистрация
19.04.2015
Сообщения
435
Благодарностей
35
Баллы
28
Еще вопрос, как можно на ютуб открывать ролики в новой вкладке?
https://www.youtube.com/results?search_query=Модель ноутбука HP Omen 16-c0048ur

Вот это
he.SetAttribute("target", "_blank");
ничего не решает.
Использую C# для наведения мыши. Но открывает в том же окне.
Видимо потому что объект "he" найден на базе XPath. или это особенность youtube?

Сделал и через
HtmlElement he = instance.ActiveTab.FindElementByXPath
и через
HtmlElement he = instance.ActiveTab.FindElementByAttribute

he.SetAttribute("target", "_blank"); ни там ни там не работает
Что можно сделать чтобы при клике по ссылке, видос открывался в новой вкладке???
 
Последнее редактирование:

radv

Client
Регистрация
11.05.2015
Сообщения
3 682
Благодарностей
1 866
Баллы
113
Старайтесь составлять более короткий xpath. так меньше параметров влияют на него. Попробуйте составить более универсальное выражение, используйте плагины браузера (например chropath https://zennolab.com/discussion/threads/xpath-vopros.71342/post-487423 ) для проверки составленных xpath
 

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