Python Selenium Webdriver:找到#document元素

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)

ayc*_*dee 6

切换到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的内容.