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

如何通过Java/Selenium程序化填充纽约时报填字游戏单元格内容

解决纽约时报填字游戏单元格填充问题

问题背景

用Java/Selenium调用sendKeys()方法填充纽约时报填字游戏单元格时,出现element not interactable: element has zero size错误;尝试JavaScript模拟键盘输入也未生效,需要找到正确的单元格值设置方式。

页面中单个线索的示例元素结构如下:

<!-- 线索编号,此处为3 -->
<text x="71.00" y="14.50" text-anchor="start" font-size="11.00">  
  <text class="xwd__cell--hidden" aria-live="polite">  </text>3
</text>
<!-- 对应谜底,此处为N -->
<text x="85.50" y="33.25" text-anchor="middle" font-size="22.00">  
  <text class="xwd__cell--hidden" aria-live="polite">N  </text>N
</text>

解决方案

方案1:直接用JavaScript修改元素文本并同步状态

页面中的xwd__cell--hidden标签是辅助交互的隐藏元素,页面填字状态可能依赖它的内容。可以同时修改隐藏元素和显示文本的内容,并触发同步事件:

// 定位显示谜底的text元素
WebElement answerText = driver.findElement(By.xpath("//text[@text-anchor='middle' and @font-size='22.00']"));
// 定位隐藏的辅助text元素
WebElement hiddenText = answerText.findElement(By.className("xwd__cell--hidden"));

JavascriptExecutor js = (JavascriptExecutor) driver;
// 修改隐藏元素内容
js.executeScript("arguments[0].textContent = arguments[1];", hiddenText, "目标字母");
// 修改显示文本内容
js.executeScript("arguments[0].textContent = arguments[1];", answerText, "目标字母");
// 触发input事件同步页面状态
js.executeScript("arguments[0].dispatchEvent(new Event('input', { bubbles: true }));", answerText);

方案2:模拟真实焦点与键盘事件

如果直接修改文本不生效,可先让单元格获得焦点,再模拟完整的键盘输入流程:

// 定位单元格的SVG容器(通常是包含text元素的g标签,需根据实际页面调整class)
WebElement cellContainer = driver.findElement(By.xpath("//g[contains(@class, 'xwd__cell')]"));
// 点击容器获取焦点
cellContainer.click();

JavascriptExecutor js = (JavascriptExecutor) driver;
String targetLetter = "目标字母";
// 模拟键盘按下、输入、松开事件
js.executeScript("const evt = new KeyboardEvent('keydown', { key: arguments[0], bubbles: true }); document.activeElement.dispatchEvent(evt);", targetLetter);
js.executeScript("const evt = new KeyboardEvent('keypress', { key: arguments[0], bubbles: true }); document.activeElement.dispatchEvent(evt);", targetLetter);
js.executeScript("const evt = new KeyboardEvent('keyup', { key: arguments[0], bubbles: true }); document.activeElement.dispatchEvent(evt);", targetLetter);

注意事项

  • 纽约时报填字游戏存在反爬机制,操作时需添加合理延迟(如Thread.sleep(500)),避免触发限制
  • 元素定位需根据实际页面结构调整,优先使用通用类名而非硬编码的x/y坐标,保证兼容性
  • 部分填字游戏通过光标导航切换单元格,需确保目标单元格处于激活状态后再执行输入操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:42:46