我这样做是为了增强Selenium Webdriver脚本。 我已经尝试过使用带有Java的httpclient和许多其他东西,但我无法到达任何地方。 请帮忙!
这是情景:
在点击按钮的网页中执行某项操作后, GET / POST方法可以在Chrome的开发者工具中看到。
我在这里以谷歌为例。
我需要的是收集所有资源名称,直到出现某个资源(如果您在Chrome中打开开发人员工具并导航到google.com,则在最左侧列的“网络”标签下,您会看到tia.png,只是一个例子。)
应该实现两件事:
确保加载了某个资源
在执行任何其他操作之前,确保页面已完全加载(所有GET / POST方法都已转移)。
httpclient,httpurlconnection只捕获一个请求,但页面发送了大量请求。我们如何捕获所有这些?
答案 0 :(得分:0)
通过使用http apache客户端,您可以使用以下内容: - 要解决您的问题,您可以获取响应代码“response.getStatusLine()。getStatusCode()”并检查预期的响应代码,并且还可以使用响应的结果。
URI url = new URI("String URI");
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
HttpResponse response = HttpClientBuilder.create().build().execute(post);
System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
System.out.println("Ressponse 1 >>>>"+result.toString());
并且,如果您需要在帖子请求中发送参数,例如: -
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("username", "yourusername"));
urlParameters.add(new BasicNameValuePair("password", "yourPassword"));
post.setEntity(new UrlEncodedFormEntity(urlParameters));
答案 1 :(得分:0)
这是我的问题的答案:
https://kenneth.io/blog/2014/12/28/taking-chrome-devtools-outside-the-browser/ https://github.com/auchenberg/chrome-devtools-app
来自博客:
这是一个独立的应用程序,可以在自己的进程中运行Chrome DevTools。 它由node-webkit提供支持,并且能够在Windows,Mac和Windows上运行 Linux,完全独立于Chrome。
我想捕获应用程序和服务器之间的所有请求(如屏幕截图所示),以便我可以确保所有关键资源,请求来回传输以及页面已完全加载。 我无法执行此操作,以编程方式执行我们在此处图片中“网络”标签下的Chrome开发工具中看到的内容。
Kenneth的工作让我们在一定程度上实现了这一目标。