Как найти элемент, который содержит вложенный элемент c? - PullRequest
2 голосов
/ 21 марта 2020

Моя веб-страница содержит несколько <frame>. И мне нужно найти фрейм, который содержит //a[@id='edit'].

Итак, я попытался //frame[//a[@id='edit']], но этот xpath возвращает 0 элемент.

<frame>
    ...
</frame>
<frame>
    #document
    <html>
        <head></head>
        <body>
            ...
            <a id='edit'>Edit</a>   <!-- Added closing tag -->
            ...
        </body>
    </html>
</frame>
<frame>
    ...
</frame>

Есть идеи?

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Вы можете использовать ось descendant-or-self:: следующим образом:

//frame[descendant-or-self::a[@id='edit']]

Результат - второй элемент <frame>.

0 голосов
/ 23 марта 2020

, т. Е. Встроенный фрейм - это конструкция, которая встраивает документ в документ HTML, так что внедренные данные отображаются внутри подокна окна браузера. Это не означает полного включения, и оба документа являются независимыми, и оба они рассматриваются как полные документы, а не рассматриваются как один из частей другого. Следовательно, вы не можете идентифицировать элемент <iframe> через его потомков.

Подробное обсуждение можно найти в Способы работы с #document в iframe


Решение

Как решение, которое вы должны построить Стратегии локатора на основе атрибутов <iframe>.

Несколько подробных обсуждений можно найти в Переключиться на iframe через Selenium и python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...