Kotlin, Cucumber и Selenium - Kotlin не способен взаимодействовать с элементом (ами) - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь создать простой тест в IntelliJ, используя Kotlin вместо Java, наряду с Cucumber и Selenium. Тем не менее, это не так просто, как я. Я установил Kotlin и настроил его для проекта, и нет сообщений об ошибках, связанных с этим.

Однако, в Kotlin, кажется, трудно добиться простой вещи, например щелчка по переключателю, например, списка. ,Там нет сообщения об ошибке;Щелчок просто не происходит.

Строка огурца:

Og jeg har et konkret boligprosjekt

Определение шага (Java):

@Og("^jeg har et konkret boligprosjekt$")
public void jegHarEtKonkretBoligprosjekt() {
    //oppforePage.velgKonkretBoligprosjekt();          <-- Java
    OppforePageK.Companion.velgKonkretBoligprosjekt(); <-- Kotlin
}

Объект страницы Java (который работаеткак и ожидалось):

@Slf4j
public class OppforePage {
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.support.FindBy;
    import org.openqa.selenium.support.PageFactory;

    private static WebElement lblsokerOmboligprosjekt;

    private ExtendedWebDriver driver;


    public OppforePage() {
        this.driver = Browser.extendedDriver();
        PageFactory.initElements(driver, this);
    }

    void velgKonkretBoligprosjekt() { lblsokerOmboligprosjekt.click(); }

...

Объект страницы Kotlin (который не работает):

import no.husbanken.e2e.rammeverk.selenium.driver.ExtendedWebDriver
import org.openqa.selenium.WebElement
import org.openqa.selenium.support.FindBy
import org.openqa.selenium.support.PageFactory

class OppforePageK() {
    companion object {
        var driver: ExtendedWebDriver = Browser.extendedDriver()

        @FindBy(id = "lblsokerOmboligprosjekt")
        private val lblsokerOmboligprosjekt: WebElement? = null

        init {
            PageFactory.initElements(driver, this)
        }

        fun velgKonkretBoligprosjekt() {
            lblsokerOmboligprosjekt?.click()
        }
    }
}

(я удалил некоторые очевидные операции импорта и т. д.)

Когда Kotlin пытается нажать кнопку с помощью метода velgKonkretBoligprosjekt (), на странице ничего не происходит. Однако сообщения об ошибке нет, и тест продолжается и завершается неудачей на более позднем этапе, поскольку кнопка не была нажата.

Есть идеи? Я знаю, что для этого можно использовать Kotlin, но я, кажется, постоянно сталкиваюсь с небольшими стенами, где не могу понять, почему кажущиеся маленькими и простыми вещи не работают так, как я думаю.

1 Ответ

1 голос
/ 05 ноября 2019
@FindBy(id = "lblsokerOmboligprosjekt")
        private val lblsokerOmboligprosjekt: WebElement? = null

Я бы сказал, что это проблема. val s нельзя переназначить, попробуйте изменить его на private var, иначе ничего не произойдет, поскольку ваш WebElement имеет значение null

EDIT: похоже, проблема связана с логикой, заключенной в компаньонеобъект

...