【问题标题】:How to return DOM from Selenium after click点击后如何从 Selenium 返回 DOM
【发布时间】:2013-06-09 01:17:40
【问题描述】:

我想在单击链接后使用 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 的新手。我错过了什么?

【问题讨论】:

    标签: python html dom selenium


    【解决方案1】:

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

    【讨论】:

    • 是的。我已经在那里等了,但这还不够。谢谢。
    • 请注意,这不是 DOM,而是 HTML 源代码。
    猜你喜欢
    • 1970-01-01
    • 2014-09-24
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多