Фреймы являются отдельными документами, поэтому их содержимое не будет включено в HTML-код главной страницы; Вы должны прочитать их отдельно.
Вы можете сделать это, используя функцию Selenium select_frame
.
Вы можете получить доступ к фрейму через его имя, селектор CSS, ссылку на xpath и т. Д., Как и для других элементов.
Когда вы выбираете фрейм, вы изменяете контекст Selenium, поэтому вы можете получить доступ к содержимому фрейма, как если бы это была текущая страница.
Если у вас есть кадры внутри фреймов, вы можете продолжить этот процесс через дерево фреймов.
Очевидно, вам нужен метод возврата обратно по пути кадра. Selenium обеспечивает это, позволяя вам использовать ту же функцию select_frame
с параметром либо relative=up
для перемещения контекста к родительскому элементу текущего кадра, либо relative=top
для перехода на главную страницу в браузере.
Таким образом, с помощью этой функции вы можете перемещаться по рамкам на странице.
Вы не можете получить доступ ко всем сразу; только один кадр может быть в контексте одновременно, поэтому вы никогда не сможете сделать один вызов get_html_source
и получить все содержимое фрейма одновременно, но вы можете перемещаться по фреймам на странице в вашем скрипте Selenium и получать источник HTML для каждого фрейма отдельно.
Надеюсь, это поможет.