GebとSpockを一緒に使用してフロントエンドアプリケーションをテストしています。私はこれらのツールの両方に新しいです。私はGebReportingSpecを拡張するSpock仕様を持っています。クラス全体を実行しているときにSpock非初期のフィーチャメソッドが失敗する
次に、アプリケーションにログインして特定のページに移動するsetupSpecがあります。これに続いて、ウェブページ上でアクションを実行するさまざまなフィーチャメソッド(ドロップダウンをクリックしてからオプションを選択するなど)が続きます。
すべてのフィーチャメソッドは、それらが単独で実行されると正常に通過します。第1のフィーチャメソッドは、単にドロップダウンから値を選択し、結果として適切なフィールドが表示されることをアサートする(選択されたオプションは、ページに表示されるフィールドを制御する)。 2番目のフィーチャーメソッドは、ドロップダウンリストから別のオプションを選択できないため、フィールドを見つけることができないため、そのメソッドのアサートが失敗します。新しいフィールドを更新するイベントによって選択されたオプションは、トリガーされません。私のスペックは以下の通りです:
class VerifyFields extends GebReportingSpec {
def setupSpec() {
// Log in
via Dashboard
loginForm.login("marco", "abc123")
// Navigate to Page 1
button1.click()
button2.click()
// Click Button 3
button3.click()
}
// This feature method passes successfully
def "Verify Member fields exist"() {
when: "User selects Member option for drop down 1"
at Page1
projSubject.click()
projCoverMbrFields.projSubjectMbrOption.click()
sleep(1500)
then: "All expected member fields are displayed in the left panel"
assert mbrName.present
}
// This feature method fails when run after the first feature method
def "Verify Provider fields exist"() {
when: "User selects Provider option for subject type"
at Page1
projSubject.click()
projCoverProvFields.projSubjectProvOption.click()
sleep(1500)
then: "All expected provider fields are displayed in the left panel"
assert provName.present
}
私は以下の行のような要素に集中するページを取得するには、物事を追加しようとしている:
driver.findElement(By.className("projSubject")).click()
driver.findElement(By.cssSelector(".projSubjectoption[value='Provider']")).click()
そして=で「選択」を選択したのは属性を変更します以下の行:私は
$("select.projSubject option[value='Provider']").jquery.attr("selected", true)
projCoverProvFields.projSubjectProvOption.jquery.attr('selected', 'selected')
が、何も第2の特徴メソッドが正常にページ上のフィールドを更新するための選択ドロップダウンをトリガするために失敗した問題を解決することができます。
@Stepwise spock属性をクラスの先頭に追加すると、問題が解決しました。本当にありがとう、私はこれを解決しようと時間を費やしました! –
いいえ問題ありません - うれしかった:) – Rushby