Уведомления

Группа в Telegram: @pythonsu

#1 Март 12, 2015 17:12:28

Yury_2014
Зарегистрирован: 2014-10-27
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

AttributeError в Линуксе

Добрый день. Возник такой вопрос:
Почему авто-тесты написанные на Selenium хорошо проходят в Виндоус, но сразу же падают в Линуксе с общей ошибкой AttributeError: ‘str’ object has no attribute ‘get’ (даже браузер не открывают).

Офлайн

#2 Март 12, 2015 17:23:23

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

AttributeError в Линуксе

падают потому что ‘str’ object has no attribute ‘get’
нужен пример кода и трейс ошибки, иначе никак

Офлайн

#3 Март 13, 2015 09:40:39

Yury_2014
Зарегистрирован: 2014-10-27
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

AttributeError в Линуксе

Трейс ошибки

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)

Офлайн

#4 Март 13, 2015 09:44:57

Yury_2014
Зарегистрирован: 2014-10-27
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

AttributeError в Линуксе

Код Драйвера,который находится в файле отличном от теста

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)

Офлайн

#5 Март 13, 2015 09:48:55

Yury_2014
Зарегистрирован: 2014-10-27
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

AttributeError в Линуксе

Прошу прощения,что сразу не приложил

Офлайн

#6 Март 13, 2015 09:50:00

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

AttributeError в Линуксе

self.driver = Driver.get()
...
def get(cls):
    ...
    cls._instance = "ff"
    return cls._instance

Очевидно, что self.driver == “ff”
'str' object has no attribute “get” - разве это не логично?



Отредактировано FishHook (Март 13, 2015 09:50:26)

Офлайн

#7 Март 13, 2015 09:53:55

Yury_2014
Зарегистрирован: 2014-10-27
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

AttributeError в Линуксе

но ниже по коду

cls._instance = webdriver.Firefox(proxy=proxy)

Офлайн

#8 Март 13, 2015 10:01:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

AttributeError в Линуксе

Вот чтобы не гадать, возьми и выведи в консоль, что же у тебя там на самом деле с помощью оператора print.

self.driver = Driver.get()
print self.driver, type(self.driver)



Офлайн

#9 Март 13, 2015 10:44:10

Yury_2014
Зарегистрирован: 2014-10-27
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

AttributeError в Линуксе

Разобрался.Спасибо за наводку. Проблема была в том,что выбор браузера делался путем считывания строки из конфиг файла. Для удаления перевода строки в виндоус я использовал line.replace(“\n”, “”) . А в линуксе нужен был line.replace(“\r\n”, “”)

Офлайн

#10 Март 13, 2015 18:08:25

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

AttributeError в Линуксе

Yury_2014
А в линуксе нужен был line.replace(“\r\n”, “”)
Обычно эта проблема решается открытием файла не в бинарном режиме а в текстовом



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version