Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

webium
Теги: #<Tag:0x00007f7b64e80e68>

(Андрей Браун) #1

Воспользовался 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()

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


(Igor) #2

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


(Андрей Браун) #3

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


(Андрей Браун) #4

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


(Igor) #5

@braunman

https://github.com/wgnet/webium/issues/6 - завел багу на Webium. Действительно недосмотр того, как работать с внешним драйвером.

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


(Андрей Браун) #6

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


(Igor) #7

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

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

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

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


(Андрей Браун) #8

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


(Igor) #9

@braunman https://github.com/wgnet/webium/pull/7 - получилось сделать покрасивше. На днях релизнем новую версию.


(Андрей Браун) #10

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


(Igor) #11

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


(Igor) #12