t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как использовать page object pattern с Selenide? Постоянно получаю java.lang.IllegalStateException: Webdriver has been closed. You need to call open(url) to open a browser again.

webdriver
selenide
Теги: #<Tag:0x00007f21de030a28> #<Tag:0x00007f21de030820>

(Elvis Presley ) #1

Всем привет. Пытаюсь использовать page object pattern с Selenide, но почему то получаю java.lang.IllegalStateException: Webdriver has been closed. You need to call open(url) to open a browser again.

Вот кусок из тестового класса:

val testPage = TestPage()

    "test1" {
        testPage.openPage()
        testPage.input.value= "test"
    }

    "test2" {
        testPage.openPage()
        testPage.input.value= "test"
    }

Вот класс страница:

class TestPage {

     val input = element(By.name("q"))

    fun openPage() {
        open("http://google.com")
    }
}

Заранее спасибо!


(asolntsev) #2

Дайте-ка угадаю… TestNG?

Вы переоткрываете браузер между тестами, поэтому логично, что и пэдж обжект тоже нужно пересоздавать.

В общем, передвиньте строку val testPage = TestPage() внутрь теста.
Или вызывайте testPage = TestPage() внутри какого-нибудь @BeforeEach метода (тогда он будет создаваться заново перед каждым тестом).