【发布时间】:2021-01-25 21:11:49
【问题描述】:
我有以下 HTML 代码:
...
<div class="media ipad_media" style="padding-top: 0;">
<iframe src="//www.youtube.com/embed/XXXXXXXX" frameborder="0" allowfullscreen="allowfullscreen" width="618" height="330" data-gtm-yt-inspected-7182449_30="true">
</iframe>
<div>
...
<div class="media ipad_media hidden-xs">
<iframe src="//www.youtube.com/embed/XXXXXXXX" frameborder="0" allowfullscreen="allowfullscreen" width="618" height="330" data-gtm-yt-inspected-7182449_30="true">
</iframe>
</div>
我想要src 属性,这在iframes 中实际上是相同的。我只是使用以下命令找到第一个元素:
elem = driver.find_element_by_class_name("media.ipad_media").find_element_by_tag_name("iframe")
然后我执行以下操作:
print(elem.get_attribute('width'))
print(elem.get_attribute('frameborder'))
print(elem.get_attribute('allowfullscreen'))
print(elem.get_attribute('src'))
print(elem.get_attribute('source'))
print(elem.text)
print(elem.tag_name)
我在控制台中得到以下信息:
618
0
true
None
iframe
执行print(elem.get_attribute('src')) 怎么可能一无所获?如您所知,在控制台中执行$$("div.media.ipad_media>iframe") 命令会得到2
【问题讨论】:
-
您使用什么定位器来定位 IFRAME?请将其添加到您的问题中。我的猜测是该页面有多个 IFRAME,而您最终没有找到您正在寻找的那个。
-
另外:src 可以在页面上动态加载,您可以在填充之前获取它。
-
@JeffC 我已经相应地编辑了描述
-
@DMart 在打印 src 之前我已经让它休眠了 5 秒
-
"media.ipad_media"不是类名。它实际上是两个类名(在find_element_by_class_name()中不起作用),但您混合了一些 CSS 选择器语法(两个类名之间的.)。我建议您将链接的find_element()调用更改为elem = driver.find_element_by_css_selector("div.media.ipad_media>iframe")。
标签: python-3.x selenium selenium-webdriver iframe getattribute