@agility said in Как проверить существование эл-та в iframe?:
Допустим на сайте https://licard24.ru/lichnyj-kabinet-lukojl есть реклама внутри iframe, мне нужно кликнуть на ссылку в этой рекламе, но для начала убедиться, что она существует. Как это сделать (желательно через xpath)?
Xpath ссылки будет такой:
>XPATH> id("aswift_0") >FRAME> >XPATH> id("google_ads_frame1") >FRAME> >XPATH> //a
Как получить кол-во эл-ов a по xpath выше или хотя бы проверить его существование?
Не совсем понимаю что в итоге необходимо, если у вас есть селектор, то используйте его. Если селектор не известен, можете, например, пройтись циклом по всем iframe в поисках необходимого элемента.
0_1571943981289_2a91125e-bc02-4cc8-a1fd-f4236eb292de-изображение.png
Тестовый скрипт
Основная проблема iframe, что это по сути другой сайт в сайте и в браузере существуют очень жёсткие ограничения связи между фреймами по js.
В BAS'e можно обойти циклом все фреймы и вложенные фреймы.
Покажу на примере - эти два селектора абсолютно одинаковые:
>XPATH> id("aswift_9") >FRAME> >XPATH> id("google_ads_frame10") >FRAME> >XPATH> //a[@target="_blank"]/img
>XPATH> //iframe >AT> 9 >FRAME> >XPATH> //iframe >AT> 0 >FRAME> >XPATH> //a[@target="_blank"]/img
0_1571996580150_e8b84d2c-9729-48fd-9198-e3bf918294db-изображение.png
0_1571996589103_d9d986d4-9aea-4b22-9541-00995ec0bf7c-изображение.png
То есть в цикле не обязательно знать id фрейма
>XPATH> id("aswift_9") >FRAME>
достаточно знать его порядковый номер в цикле
>XPATH> //iframe >AT> 9 >FRAME>