1

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

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

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

我对任何解决方案持开放态度:

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

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

4

1 回答 1

1

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

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

jQuery:“jQuery.active”</p>

原型:“Ajax.activeRequestCount”</p>

Dojo:“dojo.io.XMLHTTPTransport.inFlight.length”</p>

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

于 2011-11-28T23:33:30.407 回答