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

使用Selenium修改网页表格数值时遇到元素无法被键盘访问问题及解决

Selenium 操作网页表格单元格输入报错及解决方案

问题场景

我尝试使用Selenium在对应网站的表格行中填入新数值,最初的实现代码如下:

URL = "https://sigmazone.com/catapult-grid/"

browser = webdriver.Firefox("/usr/lib/firefox")
browser.get(URL)

# 设置行数为1
num_rows = browser.find_element_by_id("noOfRows")
num_rows.clear()
num_rows.send_keys("1")

# 刷新表格行数
update_btn = browser.find_element_by_id("updateNoOfRows")
update_btn.click()


cells = browser.find_elements_by_class_name("htRight")
# 跳过列表第一个元素,其对应包含整个表格的div节点
for cell in cells[1:]:
    cell.click()
    cell.send_keys("150")

运行代码后,执行send_keys(150)方法时抛出如下报错:
Message: Element <td class="htRight current highlight"> is not reachable by keyboard

解决方法

操作链(Action Chain)重置是解决该问题的核心步骤,若不做重置,每次调用action.perform()时都会执行之前积累的所有操作,会导致重复操作、元素不可访问等问题。最终的解决代码如下:

def set_val(selected_cell, value):
    action.move_to_element(selected_cell).double_click()  # 选中目标单元格
    action.send_keys(Keys.BACKSPACE, Keys.BACKSPACE, Keys.BACKSPACE)  # 删除单元格原有数值
    action.send_keys(str(value))  # 输入目标数值
    action.perform()  # 执行本次组装的操作链
    action.reset_actions()  # 仅执行该方法无法完全清空操作链缓存
    # 手动清空所有设备的操作缓存
    for device in action.w3c_actions.devices:
        device.clear_actions()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:15:05