Захват вывода из вызова браузера с помощью Selenium - PullRequest
1 голос
/ 25 мая 2010

Мне нужно создать сценарий использования (с использованием Selenium), в котором я отправляю HTTP-вызовы с Cookie через браузер и сохраняю возвращаемое значение в текстовом файле.

Что мне нужно сделать, я запустил это с помощью 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 ]

3 голосов
/ 25 мая 2010

Я бы порекомендовал Selenium IDE или Selenium RC для этого. В IDE вы можете запускать тесты только в Firefox, но это хорошее введение в Selenium.

Команды, которые могут вас заинтересовать: createCookie, open и storeHtmlSource. Для сохранения исходного кода HTML в текстовом файле вы, вероятно, захотите перейти на Selenium RC и реализовать его на предпочитаемом вами языке клиента.

Полезные ссылки

2 голосов
/ 25 мая 2010

Не уверен, если вы хотите изменить 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 в текстовом файле, и вы получите основной текст (измените это, если хотите все 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..
    }
}
...