У меня есть объект element
, который возвращается другим методом класса, к которому у меня нет необходимости изменять.
>>> from selenium.webdriver import Chrome
>>> browser = Chrome()
>>> browser.get('https://www.google.com')
>>> element = driver.find_element_by_tag_name('input')
>>> type(element)
<class 'selenium.webdriver.remote.webelement.WebElement'>
У меня есть отдельный класс, который расширяет функциональные возможности элемента.
>>> class Input:
>>> def __init__(self, element):
>>> assert element.tag_name == 'input', 'Element must be of type "input"'
>>> self.element = element
>>> self.browser = element.parent
>>> def is_enabled(self):
>>> return self.element.is_enabled()
>>> @property
>>> def value(self):
>>> return self.element.get_attribute('value')
В настоящее время я использую это, передав element
в класс:
>>> input = Input(element)
>>> input.is_enabled() # Same as input.element.is_enabled()
True
Я хочу иметь возможность более легко получить доступ к атрибутам исходного объекта, а не к тому, чтобы укажите это в звонке. Например:
Вместо этого:
>>> input.element.tag_name
'input'
Сделайте это:
>>> input.tag_name
'input'
Как бы я реализовал что-то подобное?