Selenium/Java 点击ion搜索弹窗+号出现元素定位及点击拦截问题如何解决
报错根因
你遇到的ElementClickInterceptedException是典型的元素点击被遮挡问题:你定位的ion-icon元素上层有<span class="button-inner">元素覆盖,直接点击ion-icon时,点击事件会被上层的span接收,所以触发报错。
解决方案
方案1:修改元素定位,直接定位可接收点击的上层元素
不要直接定位ion-icon,改为定位覆盖在它上层的span.button-inner元素,可以用如下xpath定位父级span:@FindBy (xpath = "//*[@name='ios-add-circle-outline']/parent::span[@class='button-inner']") private WebElement plusIcon;定位到实际可点击的元素后再执行点击操作即可。
方案2:使用JS强制触发点击事件
如果你需要保持现有元素定位不变,可以通过JavascriptExecutor绕过前端元素层级限制,直接触发目标元素的点击事件,替换你原来的plusIcon.click()代码即可:// 保留原有等待逻辑,替换点击代码 JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; jsExecutor.executeScript("arguments[0].click();", plusIcon);方案3:替换硬等待为显式等待,确保元素完全可交互
你现在用的Thread.sleep(3000)是固定时长硬等待,可能存在弹窗渲染未完成就执行点击的情况,替换为显式等待判断元素可点击状态,稳定性更高;另外原有driver.switchTo().window(currentWindow)属于冗余代码,currentWindow本身就是当前窗口,无需重复切换,可以直接删除:WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement clickablePlus = wait.until(ExpectedConditions.elementToBeClickable(plusIcon)); clickablePlus.click();
内容的提问来源于stack exchange,提问作者Niks
相关产品推荐
相关产品推荐

