Я использую Геба и Спока вместе, чтобы протестировать интерфейсное приложение. Я новичок в обоих этих инструментах. У меня есть спецификация Spock, которая расширяет GebReportingSpec.
Затем у меня есть setupSpec, который входит в приложение и переходит на определенную страницу. За этим следуют различные методы функций, которые выполняют действия на веб-странице (например, щелчок раскрывающегося списка с последующим выбором параметра).
Все методы функций проходят успешно, когда запускаются сами по себе. Первый метод функции просто выбирает значение из раскрывающегося списка и утверждает, что в результате отображаются правильные поля (выбранный параметр определяет, какие поля отображаются на странице). Второй метод функции не может выбрать другой вариант в раскрывающемся списке, поэтому утверждения для этого метода завершаются ошибкой, поскольку он не может найти поля. Опция выбирается, если обновление новых полей не запускается. Моя спецификация ниже:
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()
И измените атрибут на selected = "selected" с помощью следующих строк:
$("select.projSubject option[value='Provider']").jquery.attr("selected", true)
projCoverProvFields.projSubjectProvOption.jquery.attr('selected', 'selected')
Но ничто из того, что я делаю, не может решить проблему, когда второй метод функции не может успешно запустить раскрывающийся список для обновления полей на странице.