【问题标题】:Capture script-generated mailto URI捕获脚本生成的 mailto URI
【发布时间】:2012-06-28 09:48:37
【问题描述】:

总结:

我正在为 web 应用程序(使用 Selenium)进行一些自动化测试,并且我正在尝试捕获在 onclick 事件期间由 javascript 生成的 mailto:link(特别是它的查询参数之一)。目前我能想到的唯一方法是将逻辑复制到我的测试函数中。这并不理想,因为这意味着如果 webapp 中的逻辑发生变化,我将不得不更新测试中的逻辑。我的问题是:你能想出更好的方法吗?

详情:

以下是 web 应用的工作方式:

  • 监听 div 上的点击事件
  • 如果事件的目标是“电子邮件按钮”,则根据当前状态生成一个 mailto: URI
  • 在 JavaScript 中设置 window.location = [generated URI]

不幸的是,如您所见,此 URI 生成是由于 onclick 事件而发生的,并且只是将 window.location 设置为该 URI,因此它没有将其设置为锚上的 href 属性(或任何属性上的任何属性)其他)我可以查询 DOM 的元素。

我也没有任何运气找到由于 window.location 设置为 mailto: URI 而触发的事件,该 URI 可能将 URI 作为其属性之一...我可能忘记了一个吗?

有什么想法吗?

【问题讨论】:

  • 我猜你考虑过window.onbeforeunload
  • 是的,它似乎没有触发 beforeunloadunload... 我认为它不认为自己正在(重新/卸载)加载任何内容,因为它知道浏览器正在将在不同的窗口/应用程序中处理 mailto URI。
  • 生成 URI 的代码是否也可以将其放在 DOM 中的某个位置,以便 Selenium 可以访问它?例如在数据属性或隐藏字段中?
  • 尝试记录事件对象。也许在冒泡的某个地方,回调函数将 URI 添加到事件对象本身的参数中,这对于在您的 Web 应用程序中进行访问是最佳的。

标签: javascript events selenium automated-tests mailto


【解决方案1】:

您是否尝试过使用 storeEval 手动调用 onclick 上的函数并分析返回值?

【讨论】:

    猜你喜欢
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    相关资源
    最近更新 更多