Вопрос по 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
Сообщения
211
Благодарностей
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
Сообщения
211
Благодарностей
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?
 

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
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
Сообщения
266
Благодарностей
91
Баллы
28
Задачка для нубов вроде меня
Как оттуда вытащить отзывы, если у span нет класса
 

Вложения

orka13

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

leha52rus

Client
Регистрация
01.06.2017
Сообщения
266
Благодарностей
91
Баллы
28

woober

Client
Регистрация
07.04.2015
Сообщения
211
Благодарностей
123
Баллы
43

leha52rus

Client
Регистрация
01.06.2017
Сообщения
266
Благодарностей
91
Баллы
28

woober

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

leha52rus

Client
Регистрация
01.06.2017
Сообщения
266
Благодарностей
91
Баллы
28

orka13

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

Gang

Client
Регистрация
04.04.2010
Сообщения
579
Благодарностей
313
Баллы
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
Благодарностей
2
Баллы
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
Благодарностей
2
Баллы
3

Alekseyn

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

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