Selenium 通过Xpath获取元素(Geb)
我无法通过Xpath获取元素。我用斯波克和格布。 我有HTML: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
<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')