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

C# Selenium执行WebElement.Click()抛出元素不可交互异常

问题相关页面截图1
问题相关页面截图2
问题相关页面截图3
问题相关页面截图4

程序启动前期运行正常,执行到驱动点击按钮的步骤时抛出 element not interactable(元素不可交互) 异常,试过多种解决方法均未生效,推测问题和点击按钮后页面HTML结构变化有关。


异常相关代码与报错信息

抛出异常的C#代码如下:

driver.FindElement(By.XPath("//button[@id='exifInfoMobile']")).Click();

完整报错信息:

OpenQA.Selenium.ElementNotInteractableException: 'element not interactable
(Session info: chrome=103.0.5060.114)'


目标元素HTML源码
<li class="photo-info">
       <button class="btn btn-photo-info" id="exifInfoMobile">
               <span class="text">info</span>
       </button>
</li>

已尝试排查方案
  • 配置WebDriverWait显式等待元素加载
  • 切换为按ClassName属性定位目标元素
  • 切换为按Id属性定位目标元素

以上方案均未解决问题,目前推测问题和模态组件逻辑有关:点击该按钮后页面右侧会新增信息面板,站点整体HTML结构会发生变化。


解决方案

这个报错和点击后页面结构变化没有关系,核心是触发点击时,定位到的元素不符合可交互条件,按以下优先级逐一排查:

  • 先排查匹配到了隐藏元素
    很多站点会同时写桌面端、移动端两套DOM,部分元素id完全相同,但其中一套会被设置为隐藏状态(加display:none、visibility:hidden或者hide类名),你大概率定位到了隐藏的非移动端元素。
    先执行driver.FindElements(By.Id("exifInfoMobile")).Count看同id元素数量,如果结果大于1,就把定位器改成带可见性过滤的版本,参考XPath://button[@id='exifInfoMobile' and not(contains(@style,'display: none')) and not(contains(@class,'hide'))]
  • 滚动到元素位置再点击
    如果元素不在当前视口范围内,也会报不可交互。定位到元素后先滚动到可视区域,等待滚动动画结束再点击,代码参考:
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
    IWebElement exifBtn = wait.Until(d => d.FindElement(By.XPath("替换成上面带可见性过滤的XPath")));
    IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
    js.ExecuteScript("arguments[0].scrollIntoView({block: 'center'});", exifBtn);
    Thread.Sleep(300); // 等待滚动动画完成
    exifBtn.Click();
    
  • 检查是否有遮罩层遮挡
    打开浏览器DevTools,用元素选择器点按钮所在的位置,看实际选中的元素是不是目标按钮——如果有提前加载的透明遮罩、固定导航栏、模态层盖在按钮上方,点击会被拦截,需要等遮罩消失或者先关闭遮罩再操作按钮。
  • JS点击兜底
    确认元素存在、可见、无遮挡后还是点击失败的话,用JS执行点击绕过Selenium的交互检查:
    js.ExecuteScript("arguments[0].click();", exifBtn);
    

最后注意你用的Chrome版本是103,必须使用完全对应版本的ChromeDriver,版本不匹配也会偶发各类元素交互异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:36:23