Помогите с XPath

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
Помогите, пожалуйста, с XPath
В DOMе есть подобные строки с разными емайлами
Код:
<span class="js-compose-label compose__labels__label" tabindex="-1" style="max-width: 191px;" data-text="[email protected]" data-max-width="191px"><span class="compose__labels__label__ico"><i data-bem="ico" class="ico ico_contact-label"></i></span><img src="//filin.mail.ru/pic?width=45&amp;height=45&amp;[email protected]&amp;name=romashechca_76" alt="" class="compose__labels__label__avatar" style=""><span class="compose__labels__label__text js-label-text" style="max-width: 150px; display: inline-block;">[email protected]</span><i class="icon icon_compose_label_close js-remove-label"></i></span>
мне нужно кликнуть поэтому элементу

Код:
<i class="icon icon_compose_label_close js-remove-label"></i>
но только из той строки, где есть - "[email protected]"
Пробовал разные варианты, но ничего не получается.
Самым правильным вижу такой вариант, но он тоже не работает((

Код:
("//span[@data-text='[email protected]']/i[@class='icon icon_compose_label_close js-remove-label']", 0);
Для клика использую такой код

Код:
//Находим элемент кнопки
var elButton = instance.ActiveTab.FindElementByXPath("//span[@data-text='[email protected]']/i[@class='icon icon_compose_label_close js-remove-label']", 0);
//Определяем, на каком расстоянии от верха страницы находится кнопка
int topInBrowser = int.Parse(elButton.GetAttribute("topInBrowser"));
//Делаем прокрутку на это расстояние
instance.ActiveTab.FullEmulationMouseWheel(0, topInBrowser);
//Ведём курсор мышки к кнопке
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(elButton);
//Кликаем
instance.ActiveTab.FullEmulationMouseClick("left", "click");
 

Yuriy Zymlex

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

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
А по частям в тестере браузера или PM?

В подобных местах, я бы делал через contains.
По частям, вторая часть работает, а эта нет
//span[@data-text='[email protected]']
Хотя если взять первый атрибут тега span, то тоже работает:
//span[@class='js-compose-label compose__labels__label']

Вообще, правильно составлена первая часть и вся конструкция? А то в коде очень мало понимаю...
 
Последнее редактирование:

Yuriy Zymlex

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

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
xPath валиден и по идее должен работать, надо смотреть саму страницу.
Это страница отправки письма mail.ru, момент, когда в скрытую копию уже добавлены адреса и нужно удалить один из них.
Посмотрите, если не сложно. Вот данные для входа -
[email protected]:GN2zEejpXEW
 

Yuriy Zymlex

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

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
У меня находит.

Советую добавить проверку валидности элемента:
Код:
if(elButton.IsVoid) throw new Exception("Не найден!");
А как его добавить? Можно полный код? ...я не разбираюсь((
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
Код:
//Находим элемент кнопки
var elButton = instance.ActiveTab.FindElementByXPath("//span[@data-text='[email protected]']/i[@class='icon icon_compose_label_close js-remove-label']", 0);
//Проверяем удалось ли найти
if(elButton.IsVoid) throw new Exception("Не найден!");
 
  • Спасибо
Реакции: Igorii

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
Код:
//Находим элемент кнопки
var elButton = instance.ActiveTab.FindElementByXPath("//span[@data-text='[email protected]']/i[@class='icon icon_compose_label_close js-remove-label']", 0);
//Проверяем удалось ли найти
if(elButton.IsVoid) throw new Exception("Не найден!");
Спасибо! Буду пробовать!
 

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