Как сложить верное утверждение XPath, если исчезает строка кода?

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Доброго времени суток. Подскажите, пожалуйста, сложил XPath дорогу:
XPath:
//asset-card//span[@class="c-asset__fadeText ng-star-inserted" and (text()="Выбрано")]//parent::*//parent::*//parent::*//img[@alt="Desert Eagle | Oxide Blaze (Factory New)"]
55547

Условие которого, если есть наличие слова Выбрано, тогда не кликаем на имя, которое нашли. Загвоздка в том, что, если исчезает слово Выбрано , то вместе с ним, исчезает целая строчка кода, а именно:
HTML:
<div _ngcontent-dmarket-c17="" class="c-asset__fade ng-star-inserted"><!----><!----><span _ngcontent-dmarket-c17="" class="c-asset__fadeText ng-star-inserted">Выбрано</span><!----></div>
После чего, код отказывается работать, так как html код со словом исчез.

Как же мне проложить XPath дорогу, что бы было условие - если нету этого слова, тогда кликаем, если есть строчка с этим словом - тогда не кликаем. (Клик делаю с помощью кубика Zenno)

Заранее, очень благодарен за помощь.
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Поставил - вылезла на пол экрана менюшка и вот такое окно - отключить его можно, только лишь закрыв окно. Как мне понять, что делать дальше? + Окно DevTools - полностью стало не кликабельно.
55559
брейкпоинт на изменение ветки элементов поставь и поймаешь что надо

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

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
на elements тык и смотреть что там изменилось или не успело пропасть. можно по шагам до выполнить скрипт понажимав F8

55560
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
DevTools так и должен минуту погружаться при включенном subtree, или это баг Зенно 7.1.3 ? То, что появляется и исчезает код - я могу сам регулировать - нажму на предмет - появилась строка с половиной кода, нажму еще раз, исчезла строка с половиной кода... Нажимая кнопку Play на DeBag я смотрю, как копируется мое действие, т.е. вижу, то, что кликал мышкой сам... А как это мне должно было помочь?

Вот вид, когда код есть:
55561

А вот когда его нету:
55562


на elements тык и смотреть что там изменилось или не успело пропасть. можно по шагам до выполнить скрипт понажимав F8

Посмотреть вложение 55560
 
Последнее редактирование:

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 371
Баллы
113

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Там тоже подвисания. А что в результате я должен был бы получить, используя subtree? Неужели в xpath нету значения - если отсутствует определенная html строка в коде страницы - тогда что-то делаем, если она появилась - тогда не делаем...?
Проверьте на обычном хроме.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Вопрос все еще открыт.
Как же мне проложить XPath дорогу, что бы было условие - если нету этого слова, тогда кликаем, если есть строчка с этим словом - тогда не кликаем. (Клик делаю с помощью кубика Zenno)
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Подскажите, пожалуйста, примерно сложил верную дорогу, только в обратную сторону - если элемент присутствует - тогда кликаем, а если его нету, не кликаем. В этом мне помог /descendant::* - все его потомки. - я указал, если есть потомки в html //asset-fade которые исчезают после клика на них - тогда возвращаемся к родителям и кликаем на нужный нам товар.
Xpath:
//div[@class="c-asset__inner"]//asset-fade/descendant::*/parent::*/parent::*//img[@alt="Sigil Mask of the Bladekeeper"]
А как указать, если нету потомков в этом коде: /descendant::* ? Примерно что бы было так: /descendant::empty

Дополнение:

Хотя нет, вот, нашел как указать данное утверждение, но оно не сработало верно, логика не верна, поэтому кликает по товару и с исчезающим элементом и без него:
XPath:
//div[@class="c-asset__inner"]//asset-fade[not(descendant::X)]/parent::*//img[@alt="Sigil Mask of the Bladekeeper"]
 
Последнее редактирование:

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Решение:

Ура, у меня получилось. Если кому нужно:
XPath:
//div[@class="c-asset__inner"]//asset-fade[@_nghost-dmarket-c16][not(descendant::div)]/parent::*//img[@alt="Sigil Mask of the Bladekeeper"]
Условие: если нам нужно кликать, когда нет потомков например у //asset-fade[@_nghost-dmarket-c16], добавляем строчку [not(descendant::div)], после, чего, ведем дорогу к нужному нам элементу!
 

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