我一直在使用 Python 的 Selenium Webdriver 通过此 HTML 代码获取元素。
但是,我无法访问此 #document 标记内的任何元素。
我都用过driver.find_element_by_xpath("html/body/div[@id='frame']/iframe/*")
,我尝试过elem = driver.find_element_by_tag("iframe")
,随后是elem.find_element_by_xpath
寻找内部元素但失败了。
我也尝试过做driver.switch_to_frame(driver.find_element_by_tag("iframe"))
,用xpath表达式来查找内部元素,但也不起作用。
Frame:
<div>
<iframe>
#document
<html>
<body>
<div>
....
</div>
</body>
</html>
</iframe>
</div>
切换到iframe然后使用普通的查询方法才是正确的使用方法。我在一个大型测试套件中成功地使用了它。
不过,当您完成 iframe 内的工作后,请记住切换回默认内容。
现在,来解决您的问题。您如何提供 iframe 的内容?您是否真的只是编写了 html 并将其保存到文件中,或者您正在查看示例站点。您可能会发现 iframe 实际上并不包含您期望的内容。尝试这个。
from selenium.webdriver import Firefox
b = Firefox()
b.get('localhost:8000') # or wherever you are serving this html from
iframe = b.find_element_by_css_selector('iframe')
b.switch_to_frame(iframe)
print b.page_source
这将是 iframe 内的 html。内容是你所期望的吗?或者主要是空的。如果它是空的,那么我怀疑这是因为您需要单独提供 iframe 的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)