Selenium 通过Xpath获取元素(Geb)

Selenium 通过Xpath获取元素(Geb),selenium,groovy,spock,geb,Selenium,Groovy,Spock,Geb,我无法通过Xpath获取元素。我用斯波克和格布。 我有HTML: <form class="form" style="display: block;"> <div class="crm-field"> <div class="req label"> <span class="required">*</span> Моё Имя: </div> <div class="value"> <input class

我无法通过Xpath获取元素。我用斯波克和格布。 我有HTML:

<form class="form" style="display: block;">
<div class="crm-field">
<div class="req label">
<span class="required">*</span>
Моё Имя:
</div>
<div class="value">
<input class="signup" type="text" style="background-color: rgb(255, 255, 255);">
</div>
</div>

<div class="crm-field">
<div class="req label">
<span class="required">*</span>
Login:
</div>
<div class="value">
<input class="signup" type="text" style="background-color: rgb(255, 255, 255);">
</div>
</div>

<div class="crm-field">
<div class="req label">
<span class="required">*</span>
Мой E-mail:
</div>
<div class="value">
<input class="signup" type="text" style="background-color: rgb(255, 255, 255);">
</div>
</div>

<div class="crm-field">
<div class="req label">
<span class="required">*</span>
Пароль:
</div>
<div class="value">
<input class="signup" type="text" style="background-color: rgb(255, 255, 255);">
</div>
</div>

*
Моё Имя:
*
登录:
*
Мц电子邮件:
*
Пароль:
我需要获取写入字符串的
。但是Geb只使用CSS搜索。 请帮助我获取所有输入,以及如何将文本写入输入

我用于获取元素:

 driver.findElement(By.xpath("//html/body/div[3]/div[2]/form/div[2]/div[2]/input")) << arg

driver.findElement(By.xpath(“//html/body/div[3]/div[2]/form/div[2]/div[2]/input”)您还没有弄清楚需要哪个,因为它们都很相似。然而,在这种情况下,工作方式与位置XPath略有不同

这意味着,获取接近您所需的内容,并围绕该内容在DOM中移动

例如,如果您需要
输入
则需要
电子邮件
标签(可能是为了在电子邮件中键入)。您将首先获得
电子邮件
标签(它接近您需要的内容):

然后,您将获得与此相邻的
div
,即直接位于此div之后的
div
,进行以下查询:

//div[contains(text(), 'Email')]/following-sibling:div
然后你就可以说,我想在这个
div
中输入
input
,所以它变成:

//div[contains(text(), 'Email')]/following-sibling:div/input[@type='text']

然后,您已经唯一地标识了
input
元素,您可以在
电子邮件中输入

Geb不支持XPath表达式,但您仍然可以使用Geb的。请注意,这些索引是基于0的,与XPath基于1的索引相反。例如:

$('form.form > div', 1).find('input')
编辑

事实上,现在是Geb。请记住,它尚未发布,仅在最新快照中可用,
0.10.1-SNAPHOT

$('form.form > div', 1).find('input')