如何在 TypeScript 中反映量角器 (WebDriver) 动作的链接 (ControlFlow)
Posted
技术标签:
【中文标题】如何在 TypeScript 中反映量角器 (WebDriver) 动作的链接 (ControlFlow)【英文标题】:How to reflect chaining (ControlFlow) of Protractor (WebDriver) actions in TypeScript 【发布时间】:2016-10-21 20:20:24 【问题描述】:在量角器测试中,可以像这样在元素上链接“clear”和“sendKeys”等操作:
element(by.id('myId')).clear().sendKeys('123456789')
我喜欢它简洁的风格。但是为什么它会起作用呢?
根据webdriver.Element.clear()的API Docs,clear()的返回类型是webdriver.promise.Promise.<void>
当我使用 TypeScript (1.8.x) 编译它时,编译器会抱怨 Promise
上没有名为 sendKeys()
的属性。我认为情况确实如此。
由于WebDriver ControlFlow Magic,我相信这在运行时有效。
如何扩展 Protractor 的 TypeScript Declaration File,以反映此 ControlFlow-Magic 并使我的 TypeScript 编译器满意?
【问题讨论】:
好吧,正确的返回值是this
,它是最近添加的,用于显式链接。它必须是 Promise<void> AND this
作为返回类型,但假设 this
已经是它应该工作的承诺。
【参考方案1】:
您可以将其转换为 <any>
类型,如下所示:
(<any> someInput.clear()).sendKeys()
丑陋,但没有 TS 投诉。
【讨论】:
【参考方案2】:我们最终像这样将函数添加到命名空间
declare namespace webdriver.promise
interface Promise<T>
sendKeys(s: String);
【讨论】:
以上是关于如何在 TypeScript 中反映量角器 (WebDriver) 动作的链接 (ControlFlow)的主要内容,如果未能解决你的问题,请参考以下文章