2014-09-07 2 views
1

Я изо всех сил старался найти много информации, чтобы согласиться с этим, поэтому я обратился за помощью.Запись запросов HTML в рамки робота

Я запускаю тесты пользовательского интерфейса веб-приложения с использованием рамки робота. Когда тест завершился неудачно, мне нужен журнал запросов HTML, чтобы я мог оглянуться назад и увидеть, что не удалось, т.е. вещи, не загруженные, 500 ошибок и т. Д.

К этому моменту мне не удалось найти что-то в рамках робота или селен?

Другой вариант - посмотреть, есть ли библиотека python для регистрации такого рода вещей или было бы разумной задачей создать его?

Я также изучил использование autoit, используя инструменты внутренней регистрации браузеров, но использование их - это целый тест, и я не уверен, насколько он будет работать. Я уверен, что не должен быть первым, кто хочет эту функциональность?

Я продолжал изучать это и нашел жизнеспособный вариант может быть сниффер пакетов с использованием pcapy, я понятия не имею, что делать в сетевом программировании и как я буду делать пакеты, чтобы получать сообщения и получать пакеты и репсоны , любая помощь была бы оценен

Приветствия

ответ

1

Селен только эмулирующее поведение пользователя, так что это не поможет вам здесь. Вы можете использовать прокси-сервер, который регистрирует весь трафик и позволяет просматривать трафик. BrowserMob Proxy давайте сделаем это. См. Create Webdriver от Selenium2Libray о том, как настроить прокси для вашего браузера.

Таким образом вы можете попросить своего прокси вернуть трафик после того, как вы заметили провал в вашем тесте.

+0

Это выглядит как хороший метод, но как бы я идти об использовании его в рамках робота, я вижу, он может быть реализован в питона, но затем, как бы я использовать WebDriver в тесте? –

+0

В основном вы используете Selenium2 Library так же, как и раньше, за исключением ключевого слова Create Webdriver. Вам также необходимо отправить несколько HTTP-запросов (использовать любую библиотеку HTTP для доступа к радиочастотам) для создания нового файла HAR в прокси-сервере, а в случае отказа tst запросить файл HAR из прокси-сервера. Файл HAR содержит весь HTTP-трафик, который прошел через прокси. – Harri

1

Я использовал ту же самую вещь, используя BrowserMobProxy. Он фиксирует сетевой трафик на основе требования к тестированию.

Первая функция CaptureNetworkTraffic() откроет браузер с конфигурацией, предусмотренной в параметрах.

Вторая функция Parse_Request_Response(), будет получать HAR-файл из вышеприведенной функции и возвращать соответственно. сетевые данные на основе настроенного параметра.

например.

print Capture_Request_Response("g:\\har.txt","google.com",True,True,False,False,False) 

В этом случае она будет проверять URL с «google.com» и возвращает заголовки ответа и запрос на URL.

from browsermobproxy import Server 
    from selenium import webdriver 
    import json 

    def CaptureNetworkTraffic(url,server_ip,headers,file_path): 
    ''' 
    This function can be used to capture network traffic from the browser.      Using this function we can capture header/cookies/http calls made from the  browser 
url - Page url 
    server_ip - remap host to for specific URL 
    headers - this is a dictionary of the headers to be set 
    file_path - File in which HAR gets stored 
    ''' 
    port = {'port':9090} 
    server = Server("G:\\browsermob\\bin\\browsermob-proxy",port) #Path to  the BrowserMobProxy 
    server.start() 
    proxy = server.create_proxy() 
    proxy.remap_hosts("www.example.com",server_ip) 
    proxy.remap_hosts("www.example1.com",server_ip) 
    proxy.remap_hosts("www.example2.com",server_ip) 
    proxy.headers(headers) 
    profile = webdriver.FirefoxProfile() 
    profile.set_proxy(proxy.selenium_proxy()) 
    driver = webdriver.Firefox(firefox_profile=profile) 
    new = {'captureHeaders':'True','captureContent':'True'} 
    proxy.new_har("google",new) 
    driver.get(url) 
    proxy.har # returns a HAR JSON blob 
    server.stop() 
    driver.quit() 
    file1 = open(file_path,'w') 
    json.dump(proxy.har,file1) 
    file1.close() 


def Parse_Request_Response(filename,url,response=False,request_header=False,request_cookies=False,response_header=False,response_cookies=False): 
resp ={} 
har_data = open(filename, 'rb').read() 
har = json.loads(har_data) 
for i in har['log']['entries']: 
    if url in i['request']['url']: 
     resp['request'] = i['request']['url'] 
     if response: 
      resp['response'] = i['response']['content'] 
     if request_header: 
      resp['request_header'] = i['request']['headers'] 
     if request_cookies: 
      resp['request_cookies'] = i['request']['cookies'] 
     if response_header: 
      resp['response_header'] = i['response']['headers'] 
     if response_cookies: 
      resp['response_cookies'] = i['response']['cookies'] 
return resp 


    if (__name__=="__main__"): 
    headers = {"User-Agent":"Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3"} 

    CaptureNetworkTraffic("http://www.google.com","192.168.1.1",headers,"g:\\har.txt") 
    print Parse_Request_Response("g:\\har.txt","google.com",False,True,False,False,False) 
Смежные вопросы