2

Xpath による Element の取得に問題があります。Geb で Spock を使用します。私は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>

<input class="signup" type="text" style="background-color: rgb(255, 255, 255);">書き込み文字列を取得する必要があります。しかし、Geb は CSS 検索のみを使用します。すべての入力を取得し、テキストを入力に書き込む方法を教えてください。

私は要素を取得するために使用します:

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

しかし、私は得ませんでした。

4

2 に答える 2

4

Geb は XPath 式をサポートしていませんが、Geb のインデックス付き css セレクターを使用して必要な要素を取得できます。これらのインデックスは、XPath の 1 ベースのインデックスとは対照的に、0 ベースであることに注意してください。例えば:

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

編集

実際、Gebは XPath 式をサポートするようになりました。まだリリースされておらず、最新のスナップショットでのみ利用可能であることに注意して0.10.1-SNAPHOTください。

于 2013-04-02T12:22:07.463 に答える
1

それらはすべて似ているため、どれが必要かを明確にしていません。ただし、このような場合は、位置 XPath とは少し異なる方法で動作します。

つまり、必要なものに近いものを取得し、その周りで DOM を移動します。

たとえばinput、ラベルが必要な場合Email(おそらく電子メールを入力するため)。最初にEmailラベルを取得します(必要なものに近いです):

//div[contains(text(), 'Email')]

次に、これのdiv 次のドア、つまりこのドアのdiv直後に、次のクエリを作成します。

//div[contains(text(), 'Email')]/following-sibling:div

あなたは、まあ、私はinputthis の中に欲しいと言うことができるdivので、それは次のようになります:

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

これで、要素を一意に識別したinputので、 に入力できますEmail

于 2013-04-02T09:44:27.507 に答える