如何在TypeScript中反映Protractor(WebDriver)动作的链接(ControlFlow)

时间:2016-06-20 14:18:24

标签: typescript webdriver promise protractor

在量角器测试中,可以链接诸如" clear"之类的动作。和" sendKeys"在这样的元素上:

element(by.id('myId')).clear().sendKeys('123456789')

我喜欢它的紧凑风格。但为什么会有效?

根据webdriver.Element.clear()的API文档,clear()的返回类型为webdriver.promise.Promise.<void>

当我使用TypeScript(1.8.x)编译它时,编译器会抱怨sendKeys()上没有名为Promise的属性。我认为事实确实如此。

我认为由于WebDriver ControlFlow Magic,这在运行时有效。

如何扩展Protractor的TypeScript Declaration File,以反映这个ControlFlow-Magic并使我的TypeScript编译器满意?

2 个答案:

答案 0 :(得分:0)

您可以将其转换为<any>类型,如下所示:

(<any> someInput.clear()).sendKeys()

丑陋,但没有TS投诉。

答案 1 :(得分:0)

我们最终将函数添加到这样的命名空间中

public func setup(with transaction: Transaction) {

    titleLabel.text = transaction.details?.title
    subtitleLabel.text = transaction.details?.subtitle
    amountLabel.text = transaction.amountString
    statusLabel.text = transaction.status

    if let amount = transaction.amount?.amount,
        let amountFloat = Float(amount), amountFloat > 0 {
        amountLabel.textColor = Colors.green
    } else {
        amountLabel.textColor = Colors.darkBlue
    }
    setupStatusIndicator(with: transaction.status)

}