如何在点击后从Selenium返回DOM

时间:2013-06-12 19:33:58

标签: python html dom selenium

我想在点击链接后使用Selenium获取页面的HTML。通常,我只会下载我想要点击的链接,但在这种情况下,当点击链接时,它会触发一些混淆的Javascript,它会将数据加载回当前页面的DOM中。这太讨厌了。

所以,这就是我期望的工作。这会加载页面,查找并单击我需要的链接,然后使用JavaScript中的outerHTML将DOM作为文本返回:

from selenium import webdriver

def get_html_after_click(i):
    '''Loads a page, then clicks an element, and returns the HTML'''
    browser = webdriver.Firefox()
    browser.get('http://www.sdjudicial.com/sc/scopinions.aspx')
    elem = browser.find_elements_by_class_name('igeb_ItemLabel')[i]
    elem.click()

    js = '''html = document.getElementsByTagName('html')[0];
            return html.outerHTML;'''
    html = browser.execute_script(js)

    browser.quit()

    return html

除非我运行此操作,否则我回来的HTML与我browser.page_source完全一样 - 即使我点击了链接并使用JavaScript抓取了DOM。

我是Selenium的新手。我错过了什么?

1 个答案:

答案 0 :(得分:2)

你可能很快就这么做了。 单击元素后,wait显示由于单击而显示的预期元素,然后执行 browser.page_source 或者执行你的java脚本