0

我正在使用 Nightwatch.js 开发 Salesforce UI 自动化

我在从警报中获取文本时遇到问题。我能够触发警报并接受它,但不能从中获取文本。

场景: 1- 用户点击获取交易 2- 几秒钟后,用户收到消息“银行账户交易详情已成功提取”。

警报示例:

警报

根据官方文档,应该可以使用 getAlertText() 获取警报

在代码中,做 browser.acceptAlert() 没有问题,但如果在接受之前我做了这样的事情:

let alertText = browser.getAlertText()

然后记录该文本,我得到这个:

 NightwatchAPI {
  capabilities: {
    acceptInsecureCerts: false,
    acceptSslCerts: false,
    applicationCacheEnabled: false,
    browserConnectionEnabled: false,
    browserName: 'chrome',
    chrome: {
      chromedriverVersion: '83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416})',
      userDataDir: '/var/folders/nd/79rp8mmj1pv6h6k51wtym__w0000gn/T/.com.google.Chrome.kCHhRk'
    },
    cssSelectorsEnabled: true,
    databaseEnabled: false,
    'goog:chromeOptions': { debuggerAddress: 'localhost:57780' },
    handlesAlerts: true,
    hasTouchScreen: false,
    javascriptEnabled: true,
    locationContextEnabled: true,
    mobileEmulationEnabled: false,
    nativeEvents: true,
    networkConnectionEnabled: false,
    pageLoadStrategy: 'normal',
    platform: 'Mac OS X',
    proxy: {},
    rotatable: false,
    setWindowRect: true,
    strictFileInteractability: false .....

它还在继续,但是太长了,无法全部分享。我收到的不是文本“银行账户交易详情已成功提取”。这个过程在香草硒中非常简单,所以我不确定我在这里遗漏了其他东西。

我确实尝试在获取文本之前切换到警报,但出现以下错误:

我用这个:browser.switchTo().alert()

  TypeError: browser.switchTo is not a function
   - writing an ES6 async test case? - keep in mind that commands return a Promise; 
   - writing unit tests? - make sure to specify "unit_tests_mode=true" in your config.

最后,如果我删除接受警报,那么测试将给出以下错误,因为它试图在结束时截取屏幕截图,但被我试图验证的警报阻止。这让我觉得它能够以某种方式看到文本:

 Error while running .getScreenshot() protocol action: unexpected alert open: {Alert text : Bank Account Transaction Details pulled successfully.}

   Error: unexpected alert open: {Alert text : Bank Account Transaction Details pulled successfully.}

有问题的代码:(请注意,由于测试,有部分被注释掉,在开始工作时接受警报,因此被注释掉)

我在代码中添加了一些注释供参考。

  //browser.acceptAlert() >> works
    let transactionsText= browser.switchTo().alert().getText(); >> gives us switchto not function error
    //browser.getAlertText() >> supposed to work but the console.log below does not print the required text
    console.log(transactionsText)

    if (transactionsText === "Bank Account Transaction Details pulled successfully.")
    {
        browser.acceptAlert()
        console.log('checking if the alert is accepted')
    }

在此先感谢您的帮助。

4

1 回答 1

0

希望您找到了解决方案,只是想在这里发布我发现的内容。我一直在寻找相同的答案,虽然我不明白为什么会发生这种情况(如果有人能解释那会很棒),但我发现了如何获取文本并将其存储在变量中。

我在这里找到了怎么做

我的代码是

browser.getAlertText((results) => {
        var alertText = results.value
        console.log(alertText)//just a quick test to see what it grabbed
    })
于 2020-12-25T13:23:07.063 回答