使用Selenium捕获浏览器调用的输出

时间:2010-05-25 07:43:49

标签: curl selenium httpwebrequest http-headers selenium-rc

我需要创建一个用例(使用Selenium),我在其中通过浏览器使用Cookie发送HTTP调用,并在文本文件中捕获返回值。

我需要做什么,我在命令行中使用CURL运行它,但是我们遇到了相同的问题,因此希望使用真实的UI浏览器进行验证。

另一件事是我需要将URL放在一个测试文件中,我可以从中读取并发送到浏览器。然后对于每个调用,我需要捕获cookie和标题。我有以下代码/逻辑,有人可以详细说明吗?

---> read a file....
File aFile = new File("../blah.txt");

BufferedReader input =  new BufferedReader( new FileReader( aFile ));
String line = null; //not declared within while loop
while (( line = input.readLine()) != null){
    callsel(line);  
    System.out.println(line);
}

--> call selenium .. Open the url.. Pass cookies        
public void callsel(String url) {

    selenium.open(url);
    selenium.waitForPageToLoad("120000");

    selenium.createCookie("","");
    selenium.createCookie("","");
    selenium.open(url);
    selenium.waitForPageToLoad("120000");

    ---> ur page is open now..
    }
}

2 个答案:

答案 0 :(得分:3)

我会推荐Selenium IDE或Selenium RC。在IDE中,您只能在Firefox中运行测试,但它是Selenium的一个很好的介绍。

您可能最感兴趣的命令是createCookieopenstoreHtmlSource。为了将HTML源代码保存到文本文件,您可能希望升级到Selenium RC并使用您首选的客户端语言实现它。

有用的链接

答案 1 :(得分:2)

在请求页面之前不确定是否要修改cookie,但在Java中使用此代码,您将捕获请求后返回的所有HTML。

String url = "http://host/";

HttpCommandProcessor proc;
proc = new HttpCommandProcessor("localhost", 4444, "*iexplore", url);

Selenium selenium = new DefaultSelenium(proc);

selenium.start();
selenium.open("pageToOpen.htm");

String HTMLOutput = selenium.getHtmlSource();
String BodyOutput = selenium.getBodyText();

更新。稍微更改了你的代码。返回正文数据,只需将tmpString值保存到文本文件中,你就可以从页面中恢复Body Text(更改这是你想要的所有html)。

---> read a file....
File aFile = new File("../blah.txt");

BufferedReader input =  new BufferedReader( new FileReader( aFile ));
String line = null; //not declared within while loop
while (( line = input.readLine()) != null){
    String tmpString = callsel(line);
    System.out.println("Line: " + line + " HTML:" + tmpString);
}

--> call selenium .. Open the url.. Pass cookies        
public string callsel(String url) {

    selenium.open(url);
    selenium.waitForPageToLoad("120000");

    selenium.createCookie("","");
    selenium.createCookie("","");
    selenium.open(url);
    selenium.waitForPageToLoad("120000");

    return selenium.getBodyText();

    ---> ur page is open now..
    }
}