Вопрос по Xpath и iFrame

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
на сайте маил.ру вплывающее окно входа.
Вот такой код работает, находит iFrame, а дальше внутри этого фрейма ничего не находит. где моя ошибка?

Код:
//iframe[@class='ag-popup__frame__layout__iframe']
а этот код ничего не находит

Код:
//iframe[@class='ag-popup__frame__layout__iframe']//input[contains(@name,'Username')]
 

woober

Client
Регистрация
07.04.2015
Сообщения
215
Благодарностей
123
Баллы
43
на сайте маил.ру вплывающее окно входа.
Вот такой код работает, находит iFrame, а дальше внутри этого фрейма ничего не находит. где моя ошибка?

Код:
//iframe[@class='ag-popup__frame__layout__iframe']
а этот код ничего не находит

Код:
//iframe[@class='ag-popup__frame__layout__iframe']//input[contains(@name,'Username')]
сходу вопрос, а обязательно // перед input? вроде // только в начале ставится, дальше просто /
 

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
// - это пропуск наследников по ветке дерева
/ - сразу следующий наследник
в других случаях // работает как надо. А вот с iFrame не работает. Такое чувство, что к фрэйму нужно отдельно обращаться, а не к instance.ActiveTab.
ищу пути при помощи RELATIVE XPATH HELPER
так вот он тоже всплывающие окна не видит
 

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
на форуме по питону предлагают вот такой способ переключения на фрэйм
Код:
self.driver.switch_to.frame(frame_reference=self.driver.find‌_element_by_xpath(x‌‌path="//iframe[@nam‌e='editor_body']"))
как тоже самое в зенке сделать не понимаю.
 

woober

Client
Регистрация
07.04.2015
Сообщения
215
Благодарностей
123
Баллы
43
а можешь ссылку прислать, где эту форму/iframe можно увидеть? чтобы уж на практике посмотреть что там да как
 
  • Спасибо
Реакции: sdsfwehbn

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
проблема не только с маил.ру. все фрэймы, которые проверял, все с xPath не ищутся

можно, конечно, решить вопрос переходя на страницу https://account.mail.ru/login/
где нет фреймов всяких. Но на будущее хочется понять как работать со всплывающими окнами
 
Последнее редактирование:

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
Решено.

что то странное и непонятное удалось найти методом тыка *HAHA*

структура дерева элементов:

iframe----->form------>button

вот такой код НЕ работает
Код:
instance.ActiveTab.FindElementByXPath("//iframe//form//button", 0).Click();

а вот такой РАБОТАЕТ
Код:
instance.ActiveTab.FindElementByXPath("//form//button", 0).Click();

вопрос знатокам: это, что, получается iframe не может участвовать в поиске?

o_O
 

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18
XPath Helper Wizard в помощь. Если он не знает, то колупай дерево элементов.
 

Tnyrtin

Client
Регистрация
12.05.2015
Сообщения
73
Благодарностей
8
Баллы
8
Привет всем. Подскажите как вытащить вот этот текст http://joxi.ru/l2Zv5xxIwqL6Y2 c помощью xPath?
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 011
Благодарностей
29
Баллы
48
Всем добрый день, или вечер!

Начал разбираться с xPath и вообще запутался разбирал пример на Яндекс Маркете
https://zennolab.com/discussion/threads/obzor-zennoposter-xpath-na-primere-jandeks-marketa.37497/

, может из-за того, что интерфейс программы сменился т.е нет такой же картинки как и в разборе примера. Помогите разобраться!

К примеру разбирается запрос к элементу Отзыв, ссылка https://market.yandex.ru/catalog/54726/list?hid=91491&suggest_text=Смартфоны&suggest=1&suggest_type=recipe&glfilter=4940921:13475069&onstock=1&local-offers-first=0

И здесь натыкаюсь на следующею сложность

Через функцию Исследование Элемента и Дерево Элементов не нашел Class snippet-card__content. как указано в примере. Зато через Конструктор Действий быстро определил все Отзывы и там все по другому. , может название классов и элементов поменялось ? Как правильно запрос прописать?

Хорошо пойдем дальше

Теперь запускаю экшен Получить Список Товаров. Как понял из описания примера

//Соберем все наши элементы у которых наименование класса начинается с data-id "//div[starts-with(@data-id, 'model-')]" - xPath запрос.

Но я data-id найти не могу( через Дерево Элементов, да же Исследование Элемента не помогает), а это значит, что я делаю что то не так

Помогите разобраться
 
  • Спасибо
Реакции: leha52rus

leha52rus

Client
Регистрация
01.06.2017
Сообщения
262
Благодарностей
91
Баллы
28
Задачка для нубов вроде меня
Как оттуда вытащить отзывы, если у span нет класса
 

Вложения

orka13

Client
Регистрация
07.05.2015
Сообщения
2 150
Благодарностей
2 153
Баллы
113
  • Спасибо
Реакции: leha52rus

woober

Client
Регистрация
07.04.2015
Сообщения
215
Благодарностей
123
Баллы
43
  • Спасибо
Реакции: leha52rus

orka13

Client
Регистрация
07.05.2015
Сообщения
2 150
Благодарностей
2 153
Баллы
113
так закиньте их все в список зенки, а потом дергайте оттуда любой номер.
 
  • Спасибо
Реакции: leha52rus

Gang

Client
Регистрация
04.04.2010
Сообщения
576
Благодарностей
311
Баллы
63
Столкнулся с похоже проблемой. что iFrame находит, а внутри ничего не видит.
Решил следующим образом.
Сначала ищем Iframe с вызовом в конце метода ContentDocument
C#:
var he = instance.ActiveTab.FindElementByXPath("//iframe[@id='mail-detail']", 0).ContentDocument;
В переменной he будет ввесь innerhtml фрейма по которому можно делать поиск через xpath или по атрибутам. Например
C#:
he.FindElementByTag("body", 0).InnerHtml;
 
  • Спасибо
Реакции: Alekseyn, Castaneda и doc

Alekseyn

Client
Регистрация
15.12.2019
Сообщения
26
Благодарностей
1
Баллы
3
Здравствуйте. Помогите, пожалуйста, разобраться со фреймами.
Есть условно страница:

HTML:
<html>
<head></head>
<body>
<table id="ydx01">
  <tbody>
    <tr><td>row_0</td></tr>
    <tr><td><iframe id="ydx02" src="https://rian.ru"></iframe></td></tr>
  </tbody>
</table>
</body>
</html>
Пытаюсь вытащить инфу со фрейма как в примере постом выше:

C#:
var tab = instance.ActiveTab;

var elem = tab.FindElementByXPath("//iframe[@id=\"ydx02\"]",0);
var dc = elem.ContentDocument;

var retval = dc.FindElementByTag("body",0).InnerHtml;

if(retval==null) return("null"); else if(retval=="") return("empty str");
return(retval);
На выходе получаю пустую строку.
Спасибо.
 

Alekseyn

Client
Регистрация
15.12.2019
Сообщения
26
Благодарностей
1
Баллы
3
Проблема заключалась в добавленном аргументе запуска instance: --site-per-process
 

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