Как проверить существование эл-та в 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 выше или хотя бы проверить его существование?



  • @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>


Log in to reply