Selenium 2 WebDriver:如何验证是否已收到并完成图像请求?

时间:2014-07-11 03:09:38

标签: php selenium webdriver

是否有一种很好的方法可以检查是否已收到图像的GET请求,例如https://api.google.com/v1/__x.gif。用PHP在Selenium 2 WebDriver中完成了吗?

最初我认为我可以发出一个XHR请求并提醒()responseText,使用assertEquals将我期望的字符串与实际输出进行比较。很快意识到这不起作用,因为我想查看我正在测试的网页请求。

经过更多的研究,我发现了两种截然不同的可能性:

  • 首先是captureNetworkTraffic(Sauce Labs支持的待定响应,看看是否可行):

  • 第二个选项(我完全不了解)将设置代理服务器。

对于服务器请求,我是stackoverflow和初学者的新手。感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

选项1和2是相同的;您使用代理来捕获网络流量。

在Webdriver中创建驱动程序实例时,您可以设置代理。这是一个服务器和端口,浏览器将通过该端口引导所有网络流量。代理可以执行许多操作,例如创建模拟响应,操作请求等,但在您的情况下,您希望代理记录所请求的请求,转发到所需的服务器,记录响应,并将响应返回给浏览器。

如果您使用像Browsermob这样的代理,您可以在测试运行期间查询请求,因为代理有API(例如,获取浏览器发出的最新请求并断言它是POST)

似乎有一个PHP库来包装与Browsermob实例https://packagist.org/packages/chartjes/php-browsermob-proxy

的交互

所以,在你的测试中;

  • 启动代理
  • 使用代理设置
  • 创建驱动程序
  • 转到所需页面
  • 断言该请求是在Browsermob中进行的

当然,另一种更简单的方法可能是通过seleniuml从html获取图像src url,然后使用http客户端在测试中发出GET请求。如果它返回一个图像,那么你可以说ing标签中的url有效,这对你的测试来说可能已经足够了。