0

我正在尝试在 IntelliJ 中创建一个简单的测试,使用 Kotlin 而不是 Java,以及 Cucumber 和 Selenium。然而,它似乎并不像我想的那样直截了当。我已经为项目安装了 Kotlin 并对其进行了配置,并且没有与此相关的错误消息。

然而,像单击单选按钮 ia 列表这样简单的事情在 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 来实现这一点,但我似乎经常遇到小墙,我无法弄清楚为什么看似小而简单的事情并不能像我想的那样工作。

4

1 回答 1

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

我会说这是问题所在。vals 无法重新分配,请尝试将其更改为private var,否则不会发生任何事情,因为您的 WebElement 为 null

编辑:似乎问题与包装在伴随对象中的逻辑有关

于 2019-11-05T13:37:41.153 回答