Вопрос по Xpath и iFrame

  • Автор темы Автор темы sdsfwehbn
  • Дата начала Дата начала

sdsfwehbn

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

Код:
Развернуть Свернуть Копировать
//iframe[@class='ag-popup__frame__layout__iframe']

а этот код ничего не находит

Код:
Развернуть Свернуть Копировать
//iframe[@class='ag-popup__frame__layout__iframe']//input[contains(@name,'Username')]
 
на сайте маил.ру вплывающее окно входа.
Вот такой код работает, находит iFrame, а дальше внутри этого фрейма ничего не находит. где моя ошибка?

Код:
Развернуть Свернуть Копировать
//iframe[@class='ag-popup__frame__layout__iframe']

а этот код ничего не находит

Код:
Развернуть Свернуть Копировать
//iframe[@class='ag-popup__frame__layout__iframe']//input[contains(@name,'Username')]
сходу вопрос, а обязательно // перед input? вроде // только в начале ставится, дальше просто /
 
// - это пропуск наследников по ветке дерева
/ - сразу следующий наследник
в других случаях // работает как надо. А вот с iFrame не работает. Такое чувство, что к фрэйму нужно отдельно обращаться, а не к instance.ActiveTab.
ищу пути при помощи RELATIVE XPATH HELPER
так вот он тоже всплывающие окна не видит
 
на форуме по питону предлагают вот такой способ переключения на фрэйм
Код:
Развернуть Свернуть Копировать
self.driver.switch_to.frame(frame_reference=self.driver.find‌_element_by_xpath(x‌‌path="//iframe[@nam‌e='editor_body']"))
как тоже самое в зенке сделать не понимаю.
 
а можешь ссылку прислать, где эту форму/iframe можно увидеть? чтобы уж на практике посмотреть что там да как
 
  • Оценить
Реакции: sdsfwehbn
проблема не только с маил.ру. все фрэймы, которые проверял, все с xPath не ищутся

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

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

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

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

вот такой код НЕ работает
Код:
Развернуть Свернуть Копировать
instance.ActiveTab.FindElementByXPath("//iframe//form//button", 0).Click();


а вот такой РАБОТАЕТ
Код:
Развернуть Свернуть Копировать
instance.ActiveTab.FindElementByXPath("//form//button", 0).Click();


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

o_O
 
XPath Helper Wizard в помощь. Если он не знает, то колупай дерево элементов.
 
Всем добрый день, или вечер!

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

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

К примеру разбирается запрос к элементу Отзыв, ссылка https://market.yandex.ru/catalog/54...40921:13475069&onstock=1&local-offers-first=0

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

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

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

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

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

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

Помогите разобраться
 
  • Оценить
Реакции: leha52rus
Задачка для нубов вроде меня
Как оттуда вытащить отзывы, если у span нет класса
 

Вложения

  • непонятки x_patch.jpg
    непонятки x_patch.jpg
    173,9 KB · Просмотры: 734
  • Оценить
Реакции: leha52rus
  • Оценить
Реакции: leha52rus
так закиньте их все в список зенки, а потом дергайте оттуда любой номер.
 
  • Оценить
Реакции: leha52rus
Столкнулся с похоже проблемой. что 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
Здравствуйте. Помогите, пожалуйста, разобраться со фреймами.
Есть условно страница:

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);

На выходе получаю пустую строку.
Спасибо.
 
Проблема заключалась в добавленном аргументе запуска instance: --site-per-process
 
  • Оценить
Реакции: madnet

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