2011-06-17 46 views
1

我想知道如何使用Selenium.captureNetworkTraffic捕获HTTP请求,然后解析出一个值来传递查询字符串。Selenium captureNetworkTraffic传递值到字符串

启动时,测试下的应用程序会生成一个UniqueID。该信息未显示给用户的URL。

我需要捕获唯一ID,然后将其传递给查询字符串以完成一系列请求。比如我需要捕捉Example123在网络业务,然后分析出的数据,并将其纳入其他查询字符串

http://www/UnqiueID=EXAMPLE123&xxx=2&xxx= 

我看了http://www.eviltester.com/index.php/2010/05/26/a-selenium-capturenetworktraffic-example-in-java/但这似乎集中在网页,链接等大小

回答

1

不要被David Burns和Corey Goldberg对captureNetworkTraffic接口的具体使用所误导 - 它可能只是你所需要的。他们正在总结事务的某些属性,但接口实际上会返回所有响应标头,其中一个标头可能包含您要查找的内容。由硒服务器返回的实际数据看起来像这样(大多来自the source code解除):

[ 
    { 
     statusCode: 200, 
     method: 'GET', 
     url: 'http://foo.com/index.html', 
     bytes: 12422, 
     start: '2009-03-15T14:23:00.000-0700', 
     end: '2009-03-15T14:23:00.102-0700', 
     timeInMillis: 102, 
     requestHeaders: [ 
      { 
       name: 'Foo', 
       value: 'Bar' 
      }, 
      { 
       name: 'Name2', 
       value: 'Value2' 
      }, 
      ... 
     ], 
     responseHeaders: [ 
      { 
       name: 'Baz', 
       value: 'Blah' 
      }, 
      { 
       name: 'Name3', 
       value: 'Value3' 
      }, 
      ... 
     ] 
    }, 
    { 
     ... 
    }, 
    ... 
] 

这就是说,你想要的值可能是提供给一个Cookie的浏览器,你可以从硒更多检索只需使用getCookieByName命令。

+0

不幸的是,信息没有存储在cookie中。我能够获得包含UniqueID的网络流量,现在我只需要弄清楚如何识别和提取仅传递的数字。 这是我到目前为止 String Networktraffic = selenium.captureNetworkTraffic(“XML”); System.out.println(Networktraffic); Pattern pattern = Pattern.compile(“regex:UniqueID = [0-9]”);匹配匹配器= pattern.matcher(Networktraffic); 匹配匹配器= pattern.matcher(Networktraffic); (matcher.find()){ System.out.println(matcher.group(1)); 我可以看到这在XML流量url =“http:// www/LoadDatabaseFromWS?UniqueID = 96472” – BPK