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

Selenium(Python+SafariDriver)无法点击带onclick=proceed()的下一页表格

解决Selenium SafariDriver无法点击下一页的方案

针对你遇到的情况,结合HTML里绑定的onclick="proceed()"事件,推荐以下几种可行方案:

1. 直接调用页面JS函数

跳过元素点击环节,直接通过Selenium执行页面绑定的proceed()函数,这是最直接的触发方式:

browser.execute_script("proceed();")

2. 确保元素可见后再点击

Safari对元素可见性要求较高,先滚动到目标元素所在视口,再执行点击:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待表格元素可点击
next_table = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, "nav_entry")))
# 滚动到元素位置
browser.execute_script("arguments[0].scrollIntoView(true);", next_table)
# 执行点击
next_table.click()

3. 检查是否存在iframe嵌套

如果目标元素嵌套在iframe中,需先切换到对应iframe才能操作:

# 根据实际iframe的定位方式(id/name/class等)找到iframe
iframe = browser.find_element(By.ID, "iframe_id")
# 切换到iframe内
browser.switch_to.frame(iframe)
# 执行跳转操作(比如调用JS函数)
browser.execute_script("proceed();")
# 操作完成后切回主文档
browser.switch_to.default_content()

4. 检查SafariDriver配置

SafariDriver有特殊权限要求,确认以下配置是否正确:

  • 开启Safari「开发」菜单:偏好设置 → 高级 → 勾选「在菜单栏中显示“开发”菜单」
  • 在开发菜单中开启「允许远程自动化」
  • 确保Safari版本与SafariDriver版本匹配(通常随系统更新同步)

5. 排除页面遮罩/弹窗干扰

如果页面存在加载遮罩、弹窗等覆盖元素,需先等待这些元素消失:

# 根据实际遮罩元素的定位方式修改,示例用class定位
WebDriverWait(browser, 20).until(EC.invisibility_of_element_located((By.CLASS_NAME, "loading-mask")))
# 再执行跳转操作
browser.execute_script("proceed();")

内容的提问来源于stack exchange,提问作者geesebeater

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:15:35