我正在使用 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')
}
在此先感谢您的帮助。