use*_*359 3 python selenium xpath webdriver selenium-webdriver
我一直在使用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表达式来查找内部元素,但它也没有用.
帧:
<div>
<iframe>
#document
<html>
<body>
<div>
....
</div>
</body>
</html>
</iframe>
</div>
Run Code Online (Sandbox Code Playgroud)
切换到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
Run Code Online (Sandbox Code Playgroud)
这将是iframe中的html.内容是您所期望的吗?或者它主要是空的.如果它是空的,那么我怀疑是因为你需要单独提供iframe的内容.