Форум сайта python.su
0
Добрый день. Возник такой вопрос:
Почему авто-тесты написанные на Selenium хорошо проходят в Виндоус, но сразу же падают в Линуксе с общей ошибкой AttributeError: ‘str’ object has no attribute ‘get’ (даже браузер не открывают).
Офлайн
53
падают потому что ‘str’ object has no attribute ‘get’ 
нужен пример кода и трейс ошибки, иначе никак
Офлайн
0
Трейс ошибки
self = <page.searchPage.Search instance at 0x7fcb185073f8>, driver = None originCity = None, destinationCity = None, departureDate = None, backDate = None notOneWay = None, directOnly = None, plusMinus3 = None def __init__(self, driver=None, originCity=None, destinationCity=None, departureDate=None, backDate=None, notOneWay=None, directOnly=None, plusMinus3=None): self.page_url = url() self.site_version = SV.site_version() self.driver = Driver.get() > self.driver.get(self.page_url) E AttributeError: 'str' object has no attribute 'get'
[code][/code]
Отредактировано FishHook (Март 13, 2015 09:46:04)
Офлайн
0
Код Драйвера,который находится в файле отличном от теста
class Driver(object): _instance = None _profile = None _operating_system = None @classmethod def get(cls): if not getattr(cls, '_instance'): cls._instance = "ff" if cls._instance == "ff": cls._instance = webdriver.Firefox(proxy=proxy) return cls._instance @classmethod def close(cls): if getattr(cls, '_instance'): cls.get().close() cls._instance = None
[code][/code]
Отредактировано FishHook (Март 13, 2015 09:46:42)
Офлайн
0
Прошу прощения,что сразу не приложил
Офлайн
568
self.driver = Driver.get() ... def get(cls): ... cls._instance = "ff" return cls._instance
Отредактировано FishHook (Март 13, 2015 09:50:26)
Офлайн
0
но ниже по коду
cls._instance = webdriver.Firefox(proxy=proxy)
Офлайн
568
Вот чтобы не гадать, возьми и выведи в консоль, что же у тебя там на самом деле с помощью оператора print.
self.driver = Driver.get() print self.driver, type(self.driver)
Офлайн
0
Разобрался.Спасибо за наводку. Проблема была в том,что выбор браузера делался путем считывания строки из конфиг файла. Для удаления перевода строки в виндоус я использовал line.replace(“\n”, “”) . А в линуксе нужен был line.replace(“\r\n”, “”)
Офлайн
253
Yury_2014Обычно эта проблема решается открытием файла не в бинарном режиме а в текстовом
А в линуксе нужен был line.replace(“\r\n”, “”)
Офлайн