Как узнать имя исключения в Python , для объекта webdriver, для секции try/except

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Orakul, 7 Aug 2017.

  1. Orakul

    Orakul New Member

    Joined:
    24 Jun 2013
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Всем здравствовать и болеть )))
    Ребят
    --1-- как узнать конкретное имя исключения для объекта?
    --2-- как пустить трафик от прокси №1 через прокси №2
    в моем случае от проксик №1 - browsermobproxy , через проксик №2 - burpsuite

    само исключение хочу поставить на "событие" - firefox.close(), когда скрипт запускаю , скрипт запускает браузер firefox и если браузер сразу закрыть , не давая ему корректно обработать запросы к сайту ,то вываливается Traceback :
    Traceback (most recent call last):
    File "ffstart.py", line 126, in <module>
    A.start_firefox_url('http://www.google.ru')
    File "ffstart.py", line 89, in start_firefox_url
    self.driver.get(self.url)
    File "/home/sirius/project/python_sir/SBBs_sdo/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 268, in get
    self.execute(Command.GET, {'url': url})
    File "/home/sirius/project/python_sir/SBBs_sdo/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
    File "/home/sirius/project/python_sir/SBBs_sdo/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.WebDriverException: Message: Failed to decode response from marionette



    сам код.
    #!/usr/bin/env python3
    import sys
    import requests
    from selenium.webdriver.common.proxy import * # эта бибилиотека нужна ждя пуска мозилы через порт 8080
    from bs4 import BeautifulSoup
    from selenium import webdriver
    from selenium.common.exceptions import TimeoutException
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from browsermobproxy import Server, Client # попробую реализовать схему: вызов скрипта -> firefox->browsermobproxy->burpsuite

    class BMP_FF():
    """
    Класс для работы браузера Firefox через прокси browsermobproxy
    для перехвата и анализа Get запросов (перехват Get requests not implemention)
    допилить обработку исключения (преждевременного закрытия Firefox)
    """

    try:
    def __init__(self):
    """путь прописывать полностью от home до бинарника который скачивается отдельно не через pip install"""
    self.bmpproxy = Server(r'//home//sirius//project//python_sir//SBBs_sdo//lib//python3.5//site-packages//browsermob-proxy//bin//browsermob-proxy',{'port':8082})# указываю путь к бинарнику и на каком порту слушать трафик
    self.bmpproxy.start() # start browsermobproxy
    self.bmp_port = self.bmpproxy.create_proxy() # save № open port browsermobproxy
    self.resp = requests.post('http://localhost:8082/proxy',{})# отправляю запрос для получения №порта на котором поднял проксик browsermobproxy
    port = self.resp.json()['port']
    self.port_ff_net = "localhost :" + str(port)
    self.proxy_my_ff = Proxy({
    'proxyType' : ProxyType.MANUAL,
    'httpProxy' : self.port_ff_net,
    'ftpProxy' : self.port_ff_net,
    'sslProxy' : self.port_ff_net,
    'socksProxy': self.port_ff_net,
    'noProxy' : ''
    })
    self.profile = webdriver.FirefoxProfile()
    self.profile.set_preference("network.proxy.type" , 1)
    self.profile.set_preference("network.proxy.http" , "localhost")
    self.profile.set_preference("network.proxy.http_port" , self.bmp_port)
    self.profile.set_proxy(self.proxy_my_ff)

    """метод вызова браузера с заданными настройками прокси в
    методе __init__ и переход на заданный адрес"""
    def start_firefox_url(self,site_url): #site_url адрес нужного сайта
    self.url = site_url
    self.driver = webdriver.Firefox(self.profile)
    self.driver.get(self.url)
    sys.stdout.write('Открылся порт = ' + str(self.resp.json()['port']) + '\n' )

    """метод отстановки browsermobproxy"""
    def bmp_stop(self):
    self.bmpproxy.stop()

    except Exception as msg:
    sys.stdout.write(msg[2])
    sys.stdout.write('Что то пошло не так в объекте BMP_FF' + '\n' )