Selenium webdriver HTML单元驱动程序的Xpath

Selenium webdriver HTML单元驱动程序的Xpath,selenium-webdriver,xpath,Selenium Webdriver,Xpath,我正在尝试获取HTMLUnitDriver测试的xpath以查找用户名 <div class="form-group" data-reactid=".0.1.0.0"> <label class="control-label" data-reactid=".0.1.0.0.$label"> <span data-reactid=".0.1.0.0.$label.1">Username</span></label> <input

我正在尝试获取HTMLUnitDriver测试的xpath以查找用户名

<div class="form-group" data-reactid=".0.1.0.0">
<label class="control-label" data-reactid=".0.1.0.0.$label"> <span data-reactid=".0.1.0.0.$label.1">Username</span></label> 
<input type="text" label="Username" class="form-control" data-reactid=".0.1.0.0.1:$input"></div>

但它们似乎都不起作用。我在Groovy Spock中使用Selenium Geb。我缺少什么?

你可以试试这个,它会有用的

driver.findElement(By.xpath("//label[@data-reactid='.0.1.0.0.$label']//span[@data-reactid='.0.1.0.0.$label.1'][contains(text(),'Username')]"));

您正在使用Geb,但没有使用任何Geb语法。页面元素应在页面对象的内容块中定义,如下所示:

class MyPage extends Page {

  static content = {

    username $("span", text: contains("Username"))

    //alternatively do it this way
    username { find("span", text: "Username") }

  }

}

请尝试
//输入[@label='Username']
@PankajJaju,该操作不起作用,可能是因为您的输入标记未关闭,因此您的xml解析器抛出错误。你能确认HTML的结构是否正确吗?Rushby,是的,你是对的,我没有使用Geb语法。谢谢你指出这一点。这成功了!
class MyPage extends Page {

  static content = {

    username $("span", text: contains("Username"))

    //alternatively do it this way
    username { find("span", text: "Username") }

  }

}