处理 Nodejs 的 selenium webdriver 中的警报

问题描述 投票:0回答:1

我正在 Nodejs 中运行一个简单的网络服务器。在服务器端,我想检查用户是否成功在用户界面中收到警报框。可能是(确认、提示等)。有效负载位于 URL 中。为了检查这一点,我创建了一个 URL 并将其传递给 selenium 以检查它是否创建了一个警报框。但是,我处理该警报的所有尝试都失败了,但有一个例外。这是我的代码

/* global */
const webdriver = require('selenium-webdriver')
const chrome    = require('selenium-webdriver/chrome')
var options   = new chrome.Options();
options.addArguments('headless');
var path = require('chromedriver').path;
let driver = new webdriver.Builder().
    withCapabilities({'browserName': 'chrome', 'alertBehavior': 'IGNORE'}).
    setChromeOptions(options).
    build();

   /* do bunch of stuff */

function checkXSS(payload) {
    console.log('checking payload')
    var url = 'http://<url>?payload=' + payload
    driver.get(url). //exception thrown here itself. 
    driver.switchTo().alert().then(function() {
      driver.switchTo().alert().accept();},
     function(){});
    }

我得到以下异常

UnexpectedAlertOpenError: unexpected alert open: {Alert text : XSS}

我也尝试了 stackoverflow 上建议的其他方法。例如使用 driver.get.then(_, =>)、alert.dismiss() 等,但是它们仍然抛出相同的异常。我在这里缺少什么?

node.js selenium automated-tests xss
1个回答
0
投票

这可能是因为 seleniuv-webdriver 将其内部名称从“alertBehavior”更改为“unhandledPromptBehavior”

您应该直接创建 Capability 对象,然后调用 setAlertBehavior(),或者如果构建配置对象,请使用 import Capability.UNHANDLED_PROMPT_BEHAVIOR 作为键(来自 selenium-webdriver/lib/capability)

© www.soinside.com 2019 - 2024. All rights reserved.