Обработка файла HAR с помощью браузераmobproxy и веб-драйвера selenium - PullRequest
1 голос
/ 18 февраля 2020

Код ниже предназначен для захвата всех сетевых запросов, когда мы продолжаем просматривать страницы. В определенный момент при просмотре страниц я хотел бы удалить существующий файл proxy.har и создать новый файл proxy.har. Как я могу создать новый файл har, который сохраняет сетевые запросы с этой конкретной точки.

 #Start web browser for further testing(Open Google Chrome) 
 def Start(self):
     global driver
     chrome_options = webdriver.ChromeOptions()
     unpacked_extension_path = 
     'C:\\Users\\dlakshmansamvith\\Desktop\\securitytest\\chrome'
      chrome_options.add_argument('--load-extension= 
      {}'.format(unpacked_extension_path))
    chrome_options.add_argument('--ignore-certificate-errors')
    chrome_options.add_argument("--proxy-server={0}".format(proxy.proxy))
    driver = webdriver.Chrome(
        executable_path="chromedriver.exe",
        chrome_options=chrome_options)

    driver.get('https://app4.iastax.com/IASTCPortal/dko/main.aspx#LOGOUT? 
    ReturnUrl=%2FGABTAWEB')
    driver.maximize_window()


    #The code below is used for retrieving network files using browsermob 
    proxy

   def Stop(self):

     with open('./network.har', 'w') as f:
         f.write(str(proxy.har))
         print(str(proxy.har))
         # with open('file1.txt','w') as file:
         # file.write(str(proxy.har))
         # driver=StartRecording.return_driver()
     value = driver.execute_script("return 
     window.localStorage.getItem('hello')")
     with open("source.txt", "w", encoding='utf-8') as f:
         f.write(str(value))
     driver.quit()
     NetworkAPI = {}
     NetworkAPI['values'] = []
     newurl = []
     for entry in proxy.har['log']['entries']:
         with open('file.txt', 'w') as file:
             file.write(str(entry))
         if (entry['response']['content']['mimeType'] == 
     'application/json; charset=utf-8'):
             """obj = urlparse(entry['request']['url'])
             if(newurl['temp'] != entry['request']['url']):
                 newurl['temp'] = obj.netloc
                 NetworkAPI['DNS'] = entry['request']['url']"""
             newvar = {}
             newvar['url'] = entry['request']['url']
             newvar['responseheaders'] = (entry['response']['headers'])
             newvar['cookies'] = []
             NetworkAPI['values'].append(newvar)
     print(NetworkAPI)

1 Ответ

0 голосов
/ 24 февраля 2020

Я не уверен, что это подходящее решение, но я нашел его. Если вам нужно очистить все сетевые вызовы и начать с определенной точки, вы также можете создать новый файл proxy.har. Этот новый файл proxy.har собирает запросы с того места, где он был создан.

def Record(self):
    with open('./network1.har', 'w') as f:
        f.write(str(proxy.har))
        print(str(proxy.har))
        # proxy.clear_dns_cache

        proxy.new_har(options={'captureHeaders': True, 'capturecookies': 
        True})
...