浏览器自动化 - 将javascript附加到页面并等待任务完成

时间:2011-11-28 22:14:56

标签: ajax browser macros automation data-entry

我有一个需要自动化的丑陋数据输入任务。问题是某些流程依赖于没有API的基于Web的Ajax服务。

iMacros(或任何其他自动化工具)的问题在于,只要宏将javascript注入页面(修改ajax回调并完成所有需要做的事情),子脚本就无法通知父脚本任务已准备就绪,让它在一个单独的线程中继续进行。如果我使用WAIT指令,可靠性将为零,并且无法实现故障保护。

我尝试过任何我能想到的东西,包括Chrome扩展程序,降低XSS浏览器安全性,甚至通过cURL& amp;复制请求PHP。其中每一个都有其自身的局限性。

我愿意接受以下任何解决方案:

  • 可以等待页面完成加载(onload事件)
  • 可以修改该特定页面上的javascript,与vars等进行交互。
  • 可以通知父调用者已完成子任务并触发正确的事件
  • 支持flash

任何替代方案和帮助非常感谢。

1 个答案:

答案 0 :(得分:1)

这是一篇很好的文章,以Selenium为中心,解释了等待ajax请求完成的不同方法:http://agilesoftwaretesting.com/?p=111

这比尝试修改现有的JS要简洁得多。可以直接从javascript调用以下任何一个,因此只要您的自动化框架支持调用javascript(Selenium / webdriver所做的),那么您只需调用这些函数,具体取决于您的网站使用的ajax库:

jQuery:“jQuery.active”

原型:“Ajax.activeRequestCount”

道场:“dojo.io.XMLHTTPTransport.inFlight.length”

只需检查以确保该值为0,然后继续。