Java Selenium报错InvalidSelectorException:无效选择器问题排查
问题解决:Selenium表单元素检查方法的InvalidSelectorException错误
错误原因
你的代码里By.name("'+ name +'")是错误的字符串写法,Java中直接使用变量name即可,不需要额外拼接单引号和加号,这样写会把'+ name +'当成固定的name属性值去查找,导致选择器无效,触发InvalidSelectorException。
另外,driver.findElement()如果找不到元素会抛出NoSuchElementException,而不是返回false,这也会导致方法无法正常返回布尔值。
修正后的代码
public boolean Fields(String field, String name) { if ("textbox".equals(field)) { // 使用findElements判断元素是否存在,避免抛出异常 List<WebElement> elements = driver.findElements(By.name(name)); // 元素存在且可见则返回true,否则false return !elements.isEmpty() && elements.get(0).isDisplayed(); } return false; }
关键改进点
- 修复了
By.name的参数错误:直接传入变量name,不再做错误的字符串拼接 - 改用
findElements替代findElement:findElements找不到元素时会返回空列表,不会抛出异常,更适合用来判断元素是否存在 - 增加双重判断:先检查元素是否存在(列表非空),再检查元素是否可见,符合“存在并可显示”的需求
内容的提问来源于stack exchange,提问作者newb03
相关产品推荐
相关产品推荐

