【发布时间】: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? -
是的,它似乎没有触发
beforeunload或unload... 我认为它不认为自己正在(重新/卸载)加载任何内容,因为它知道浏览器正在将在不同的窗口/应用程序中处理mailtoURI。 -
生成 URI 的代码是否也可以将其放在 DOM 中的某个位置,以便 Selenium 可以访问它?例如在数据属性或隐藏字段中?
-
尝试记录事件对象。也许在冒泡的某个地方,回调函数将 URI 添加到事件对象本身的参数中,这对于在您的 Web 应用程序中进行访问是最佳的。
标签: javascript events selenium automated-tests mailto