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
})
我正在使用 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
})