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

ChromeDriver调用.click()触发onclick()函数时出现异常,手动操作正常的问题排查求助

ChromeDriver调用.click()触发onclick()函数时出现异常,手动操作正常的问题排查求助

我现在碰到一个棘手的问题:手动点击表格行里的某列TD元素时,会正常弹出新窗口展示对应账单的详情,但用ChromeDriver执行.click()操作时,却触发了目标页面的动态错误,还出现了几个手动操作时不会有的报错。想请各位帮忙分析下问题根源,或者给点解决思路?

目标元素结构

我要点击的是表格行里的一个TD,它的HTML结构是这样的:

<td onclick="ShowAdvancedTimeEntry(1,0,0,'276984899',0,generateRandom());return false;">TG</td>

我的自动化实现逻辑

我是这么写的遍历和点击逻辑,尝试点击TD里的div和span元素(也试过直接点击TD本身):

bills_xpath = './/tr[@class="rowb"]'
bills = group.find_elements(By.XPATH, bills_xpath)
for j, bill in enumerate(bills):
   data_bill = bill.find_elements(By.TAG_NAME, 'td')
   wait_element = data_bill[5].find_element(By.XPATH, './/div//span')
   wait_element.click()
      for window in all_windows: 
         if window != original_window:
            d.switch_to.window(window)
            # 获取新窗口中的所需数据
            d.close()                         
            d.switch_to.window(original_window)

手动与自动化操作的差异

  • 手动操作:点击后正常弹出新窗口,加载并展示账单详情,没有任何错误。
  • 自动化操作:触发新窗口后,目标页面的HTML里出现了本不该显示的动态错误提示(看起来是加载相关的KO模板):
<!-- ko if: false -->
            <div id="refreshOverlay" class="timersRefreshing" style="z-index:1">
                Loading...
            </div>
<!-- /ko -->
<!-- #region TIMER -->

同时还出现了三个jQuery相关的调用异常,这些错误在手动操作时完全不会出现。

我已经尝试过的解决方法

目前试了几种方案,但都没解决问题:

  • 配置ChromeDriver选项:禁用扩展、设置page_load_strategy = 'eager'
  • 增加等待逻辑:等待Ajax请求完成(通过jQuery.active == 0判断)、等待页面document.readyState变为complete、等待元素处于可点击状态
  • 尝试直接点击TD元素(data_bill[5].click()),而不是里面的子元素
  • 尝试传递认证令牌,但也没效果

现在我有点困惑,为什么ChromeDriver的点击操作和手动点击会有这么大的差异?是不是触发onclick事件的方式不一样,导致后续的jQuery/Ajax调用出问题了?有没有朋友遇到过类似的情况,或者知道怎么解决这个问题?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 18:25:28