【问题标题】:how to pass basic auth into selenium with nightwatchjs not in the url如何使用不在 URL 中的 nightwatchjs 将基本身份验证传递给 selenium
【发布时间】:2015-09-26 01:43:20
【问题描述】:

我正在使用 nightwatchjs 编写一些测试,并且需要一个 uname 和 pword 来进行基本身份验证。

我知道通过 url 传递这些凭据的能力。

但是在我正在处理的网站上,通过 URL 传递凭据会破坏一些网站的 javascript。

有谁知道将凭据传递到通常的弹出框的另一种方法?

【问题讨论】:

  • 如果您通过 URL 传递凭据会如何让您登录,然后再次“获取”页面但没有凭据?...只是一个想法。
  • hmm.. 是的好主意,这可能会奏效,但这需要在每个可能会有点乏味的测试上完成:/我想知道是否还有其他方法
  • 好吧,如果这行得通,你可以将它提取到一个单独的“设置”函数中并重用..只是为了遵循 DRY 原则..我确定的是你无法控制通过 selenium 弹出 http 登录 ..
  • 有办法设置全局应用的设置函数吗?哦……你是怎么做到的?
  • 我的意思是只应用 Extract 方法重构方法,在帮助程序库中定义函数并在测试中要求它以避免在每个测试中重复相同的代码..这只是一个普遍的想法。希望对您有所帮助。

标签: javascript selenium nightwatch.js


【解决方案1】:

基本的想法是发出 2 个get() 请求——第一个使用 URL 中的凭据登录,第二个没有——此时您将登录。

在nightwatch.js 中有这个setUp() 测试初始化​​函数,您可以在单独的 utils/helpers 文件中定义它并在每个测试中要求:

var utils = require("./utils.js");

module.exports = {
    setUp: utils.setUp,

    // rest of the test
}

utils.setUp 函数至少包含内部带有凭据的“get”请求。这种方法的缺点是在您拥有的每个测试文件中都有这些require() 调用。我对 nightwatch.js 不太熟悉,可能有更好的方法来进行全局设置/拆卸,请参阅:

【讨论】:

  • 感谢您的详细解答。如果上述 setUp 函数可以自动运行而不必在每个测试中调用,那将是王牌。
  • @John 据我了解,全局设置/拆卸功能不是内置的......谢谢。
猜你喜欢
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 2012-03-04
相关资源
最近更新 更多