Как узнать имя исключения в Python , для объекта webdriver, для секции try/except
Формулировка задачи:
I]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
[/I] сам код.
- #!/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' )
Решение задачи: «Как узнать имя исключения в Python , для объекта webdriver, для секции try/except»
- try:
- f = open('qer4t4t')
- # перехватываем все исключения, входящие в класс OSError, в том числе ошибки открытия файлов
- except OSError as err:
- print(err)
- sys.exit(int(err.errno)) # завершаем приложение если не указываем дальнейшую логику
- else:
- print(f.read())
- f.close()
- try:
- f = open('qer4t4t')
- # перехватываем только исключение отсутствия файла - FileNotFoundError
- except FileNotFoundError as err:
- print(err)
- sys.exit(int(err.errno)) # завершаем приложение если не указываем дальнейшую логику
- else:
- print(f.read())
- f.close()
- try:
- f = open('qer4t4t')
- print(f.read())
- # перехватываем все подряд (вот такие мы умные :-)), но хорошо что хоть не KeyboardInterrupt или SystemExit
- except Exception as err:
- print(err)
- sys.exit(int(err.errno))
- finally:
- f.close()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д