Nightwatch 1.3.5,能够接受警报,但无法从中获取文本。 Salesforce UI 自动化

Nightwatch 1.3.5, able to accept alert, but cannot get the text from it. Salesforce UI Automation

我正在使用 Nightwatch.js

开发 Salesforce UI 自动化

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

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

警报示例:

根据官方文档,应该可以使用getAlertText() Get Alert

在代码中,执行 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 .....

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

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

我用过这个: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')
    }

在此先感谢您的帮助。

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

我找到了方法 here

我的代码是

browser.getAlertText((results) => {
        var alertText = results.value
        console.log(alertText)//just a quick test to see what it grabbed
    })