在BrowserStack上使用Nightwatch运行自动化脚本时,如何关闭Safari弹出对话框?

时间:2019-07-10 08:02:47

标签: browserstack nightwatch

我使用Browserstack进行E2E测试,现在当我尝试在Browserstack的safari中运行移动自动化脚本时遇到了一个问题,当我单击一个按钮时,会弹出一个对话框,这将导致打开一个新标签,对话框显示如下消息:“此站点正在尝试打开弹出窗口”,我必须关闭它,脚本才能继续执行。

现在的问题是: 1.当我单击将触发此弹出对话框的按钮时,日志中将始终显示一个异常:'运行.clickElement()协议操作时出错:Appium错误:处理该错误时发生了未知的服务器端错误命令。原始错误:20秒后未得到任何回应。 2.我可以使用XPath在弹出对话框中找到按钮,然后单击以关闭对话框,但这需要花费几分钟的时间,是否有另一种方法可以使此操作更有效?

const { client } = require('nightwatch-api')
const { Given, Then, When} = require('cucumber')

Given('open mobile 163 news', async function () {
    await client.url('https://3g.163.com/news/article/EJN99AOF000189FH.html?clickfrom=index2018_news_newslist#offset=0')
})

When('choose share by QQ', async function () {
    await client.waitForElementVisible('.sharelogo')
    await client.click('.sharelogo')
})

Then('the popup should show', async function () {
    await client.waitForElementVisible('.qzone')
    await client.click('.qzone')
    await client.setContext('NATIVE_APP')
    await client.source(function(res){
        console.log(res.value)
    })
    await client.useXpath()
    await client.click('//*[@name="Allow"]')
    await client.contexts(function(result) {
        client.setContext(result.value[result.value.length - 1])
        client.useCss()
    })
})

1 个答案:

答案 0 :(得分:0)

您是否尝试过在测试脚本中添加功能“ nativeWebTap”并将其设置为值“ true”?