如何单击Web元素,直到屏幕上显示警报消息?

时间:2019-06-10 17:24:25

标签: typescript protractor

在我的应用程序中,有一个“单击以添加电子邮件”链接,如果多次单击同一链接,则会出现警报消息,提示您已达到最大限制。

我该如何使用带有量词的量角器。我用过循环,但是没用

for (let i:number=1; i<5; i++){   
    if (EmailLinkpageElement.isDisplayed())
    {   
        // click on the link
    }
    else
    {
        // verify the text message
    }
}

请提出我正在尝试做的事情,但未找到任何解决方案。

1 个答案:

答案 0 :(得分:0)

通常,您希望单击一个元素的次数未知,直到出现警报为止。因此,也许您可​​以采用这种方法:

此函数采用一个sf对象,该对象被反复单击,直到到达给定的ElementFinder或出现警告框为止。

timeout

注意

您应该了解const clickElementUntilAlertPresent = async (el: ElementFinder, timeout: number = 10 * 1000): Promise<boolean>=> { const clickDelay = 100 let done = false // start interval for clicking element repeatively const interval = setInterval(() => { // IF the function is done, clear interval, if(done) { console.log("stop clicking element now", el.locator.toString()) clearInterval(interval) return } console.log("clicking element", el.locator.toString()) el.click() }, clickDelay) // wait until alert box is present. After timeout, returns false. const result = await browser.wait<boolean>(browser.ExpectedConditions.alertIsPresent(), timeout) // Result is now true if alert is present, or false, if timeout reached. // Important here, to set done to true. We want to stop clicking interval! done = true return result } 类。 例如,

Promise

将始终为true,因为它返回一个if (EmailLinkpageElement.isDisplayed()) { }对象,并且该对象在javascript中被评估为Promise

如果您不熟悉truethy课程,那么您现在的首要任务就是学习它们! Promise任务需要它们,而在测试中则很多。

这里是一个资源:Promise