You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SeleniumBase中点击按钮后如何获取更新后的页面HTML?

SeleniumBase中点击按钮后如何获取更新后的页面HTML?

嗨,我来帮你解决这个问题!你遇到的情况其实很常见——很多现代网页都是单页应用(SPA),点击按钮后页面内容是通过JavaScript动态修改DOM实现的,并没有重新加载整个页面。这时候如果点击后立刻调用get_page_source(),很可能DOM还没完成更新,所以拿到的还是初始页面的HTML。

要解决这个问题,核心是等待页面的新内容完全加载完成,再去获取页面源码。SeleniumBase内置了非常实用的等待方法,刚好能应对这种场景,下面给你具体的解决方案:

具体步骤

  1. 在点击按钮后,找到新页面中只有点击后才会出现的标志性元素(比如特定文本、组件)
  2. 使用SeleniumBase的等待方法,等待这个标志性元素出现(或旧页面的元素消失),确保DOM已经更新
  3. 之后再调用get_page_source(),就能拿到更新后的HTML了

修改后的代码示例

self.open("https://www.example.com/dashboard")
url = self.get_current_url()
print(url)
html = self.get_page_source()
print(html)

self.click("//span[contains(.,'Change Screen Button')]")
# 关键步骤:等待新页面的标志性元素出现(替换成你实际页面中存在的元素定位)
self.wait_for_element_present("//*[contains(.,'新页面的标志性文本')]", timeout=10)
# 如果你更想确保元素是可见的,可以用这个替代上面的方法
# self.wait_for_element_visible("//*[contains(.,'新页面的标志性文本')]", timeout=10)

url = self.get_current_url()
print(url)
html = self.get_page_source()
print(html)  # 现在就能拿到更新后的HTML了

额外小提示

  • 不要用time.sleep()这种固定等待时间的方式,因为不同环境下加载速度不一样,固定等待要么浪费时间要么还是会出问题。SeleniumBase的等待方法是智能等待,元素一加载完成就会继续执行,既稳定又高效。
  • 如果找不到合适的新元素,也可以等待旧页面的特定元素消失,比如:
    self.wait_for_element_not_present("//*[contains(.,'旧页面的独有文本')]", timeout=10)
    

备注:内容来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 18:17:59