2011-11-28 62 views
1

我有一个需要自动化的丑陋数据录入任务。问题是一些进程依赖于没有API的基于web的ajax服务。浏览器自动化 - 将javascript附加到页面并等待任务完成

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

我尝试了我能想到的任何事情,包括Chrome扩展,降低XSS浏览器安全性,甚至通过PHP的cURL &复制请求。这些都有其自身的局限性。

我欢迎任何解决方案:

  • 可以等待网页加载完成(onload事件事件)
  • 可以修改特定页面上的JavaScript,与瓦尔互动等
  • 可以通知家长呼叫者的子任务的完成,并触发正确的事件
  • 支持flash

任何阿尔特rnative并且非常感谢。

回答

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,然后继续。

+0

正是我用的;万分感谢 –