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

在SoapUI与Selenium中点击按钮失败,请求技术帮助

问题分析与解决方案

你遇到的报错主要是两个核心问题:Selenium class选择器的语法错误,加上目标元素的class名称拼写错误,下面给你详细的修正方案:

错误根源拆解

  1. 错误的选择器用法:Selenium中根本不存在By.class()这个方法,定位class属性的正确方式是By.className("类名")——这里要注意class是Java的关键字,所以Selenium特意用className作为方法名来避免语法冲突。
  2. class名称拼写错误:你代码里写的是ymwc-trigger,但目标元素的实际class是mymwc-trigger(多了一个开头的m),这会直接导致元素定位失败。

修正后的代码行

把报错的那行代码替换成下面任意一种写法都可以:

方法1:用className定位(最贴合你原本的需求)

wait.until(ExpectedConditions.elementToBeClickable(By.className("mymwc-trigger")))

方法2:用ID定位(更可靠,因为元素ID唯一)

目标元素有唯一的id="menu-item-31998",用ID定位的稳定性比class更高:

wait.until(ExpectedConditions.elementToBeClickable(By.id("menu-item-31998")))

方法3:用CSS选择器定位

如果需要更灵活的匹配规则(比如同时匹配多个class),可以用CSS选择器:

// 匹配包含mymwc-trigger类的元素
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(".mymwc-trigger")))
// 或者直接通过ID定位
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#menu-item-31998")))

额外注意事项

  • 如果目标元素嵌套在<iframe>里,你需要先切换到对应的iframe才能定位元素,示例代码:
    // 假设iframe有id="login-frame"
    driver.switchTo().frame("login-frame")
    // 之后再执行元素定位和点击操作
    
  • 确认你的ChromeDriver版本和Chrome浏览器版本完全匹配,版本不兼容也可能导致各种奇怪的定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:08:06