Webium открывается еще одно окно браузера при выполнения Finds

Воспользовался Webium на проекте, все очень понравилось, но когда в первый раз пользуюсь Finds открывается новое пустое окно браузера вот на этой строчке self.context = obj в webium\find.py:

def __get__(self, obj, *args):
    self.context = obj
    self._search_element()
    return self._target_element

Грешу на то что как то не правильно передаю свой драйвер в webium:

class BasePageMy(BasePage):
    settings.default_search_type = By.XPATH

    def __init__(self, url):
        BasePage.__init__(self, Driver.get(), url)

    def get_title(self):
        return Driver.get().title

class Search(BasePageMy):
    def __init__(self):
         BasePageMy.__init__(self, self.page_url)
         self.open()

Может кто-то из более опытных подскажет что не так? Если что-то еще надо скажите.

@braunman, с ходу не вижу, что не так. Не хватает кода того, как объявлен Finds. Можете сделать минимально полный рабочий пример воспроизведения проблемы? Чтобы можно было запустить и глянуть.

@Igor обязательно в понедельник сделаю

@Igor https://github.com/braunman/test/blob/master/test_webium.py вот минимальная рабочий комплект sleep добавлен для наглядности.

@braunman

Impossible to reset implicitly_wait in Finds in case of external driver · Issue #6 · wgnet/webium · GitHub - завел багу на Webium. Действительно недосмотр того, как работать с внешним драйвером.

В качестве воркэранунда предлагаю сказать напрямую Webium’у свой инстанс драйвера:

1 лайк

@Igor
Спасибо за информацию, а можно узнать когда планируется ошибку поправит?
Так же хочу выразить благодарность за хороший фреймворк, а так же оперативно решение проблемы.

@braunman
Исправить недолго, но надо решить, как лучше это сделать.
implicit_wait надо сбрасывать, когда используется Finds (иначе будет подвисать при поиске пустого списка). Это можно делать только через инстанс драйвера. Сейчас инстанс драйвера не обязательно передавать.

У меня есть идея следующего варианта:

  1. Добавление метода set_driver, который можно и не вызывать, если не нужно.
  2. Если вдруг происходит пустой поиск с “подвисанием” (ради которого и нужен этот сыр-бор), выдавать warning пользователю, что если не хочешь ждать лишнее время, скажи вебиуму инстанс драйвера.

Подойдёт такой вариант, как считаете?

Как по мне нормально, принципе ничего криминального тут не вижу. В классе Driver пропишу set_driver(cls._instance)
Правда не сильно отличается от “хака” :blush:
А вот долго жать для нас это не вариант, среднее время теста где-то 1 минута, плюс 30 секунд это очень много для нас :cry:

@braunman Add ability to use Finds with external driver by Khrol · Pull Request #7 · wgnet/webium · GitHub - получилось сделать покрасивше. На днях релизнем новую версию.

1 лайк

@Igor
Посмотрел и обязательно попробую как зарелизитесь.
Есть правда еще пару вопросов по функциональности webium, ничего если я их задам?

Конечно. Можно даже напрямую в скайпе (igor.khrol).