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

Selenium定位Nick Name标签祖先div获取文本报错排查

Selenium 地址簿自动化练习代码修正方案

现有代码错误点

  • setupDriver()方法逻辑顺序错误:return语句写在导航操作之前,后续页面跳转代码永远不会执行;获取到的驱动实例没有赋值给静态driver变量,后续调用元素定位方法时会直接抛出空指针异常。
  • 额外声明了原始模板不存在的static String baseUrl变量,不符合平台代码结构校验规则。
  • XPath 存在三处错误:
    1. 匹配的文本值错误:页面标签实际文本为Nick Name(中间带空格),代码中写为NickName无法匹配到目标元素
    2. 谓词语法错误:.//[text()='NickName']多写了一层无效方括号,不符合XPath语法规范
    3. 祖先定位逻辑错误:/ancestor::div会匹配所有层级的上级div元素,无法精准定位到表单所属的目标div,导致获取的文本不符合预期
  • main方法为空,没有编写驱动初始化、页面跳转、元素定位的调用逻辑,代码无法走通完整执行流程。

可通过评测的完整实现代码

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import java.util.concurrent.TimeUnit;

public class NameLocator      //DO NOT Change the class name
{
    //Use the declared variables for stroing required values
    static String fName;
    static WebDriver driver;
    
    public WebDriver setupDriver()           //DO NOT Change the method Signature
    {
        DriverSetup ds = new DriverSetup();
        // 初始化驱动并赋值给静态变量
        driver = ds.getWebDriver();
        // 导航到目标地址簿页面
        driver.get("http://webapps.tekstac.com/AddressBook/");
        // 添加隐式等待保障元素加载,避免偶发定位失败
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        return driver;
    }
    public String getNameLocator()              //DO NOT Change the method Signature
    {
        // 修正XPath:精准匹配Nick Name标签,向上查找包含表单的最近一级祖先div
        WebElement element = driver.findElement(By.xpath("//*[normalize-space(text())='Nick Name']/ancestor::div[.//form][1]"));
        fName = element.getText();
        driver.close();
        return fName;
    }
    
    public static void main(String[] args)
    {
        NameLocator namLocator=new NameLocator();
        // 按流程调用方法:先初始化驱动跳转页面,再执行元素定位
        namLocator.setupDriver();
        namLocator.getNameLocator();
    }

}

代码说明

  • 严格遵循平台类名、方法签名的要求,未修改预置的结构标识
  • XPath中使用normalize-space()处理文本前后可能存在的空格,提升定位稳定性;限定祖先div必须包含form表单,且取最近一级匹配结果,避免拿到上层无关div的文本
  • 补全了完整执行链路,驱动初始化、页面跳转、元素取值、资源关闭的流程完全符合题目要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:36:21