This framework is Python implementation of good java framework HtmlElements from Yandex.
#Short description Main parent class for Web elements - Element. Input parameters:
- Web element - Required;
- Item Type - optional;
- Item Name - optional;
- An instance of logger - optional; Options 2-4 are required if you need logging operations. If it does not matter, you can leave as is. ๏
To search for items written decorator "find". It takes the input parameters and the function / class and interacts with the class, within which a challenge will be made. The decorator takes a named parameters to search for an item and set his name. To search you must specify the type of selector. List the names of the parameters:
- css - CSS selector of the element
- xpath - XPATH selector of the element
- class_name - Name of class webelement for the selector
- id - ID of webelement
- name - Name of the webelement for the selector
The second parameter is optional - "element_name". Not to be confused with the "name"!
I'm not in vain mentioned that the decorator takes a function / class. He does not care which element comes. But the function must return a class member is not initialized. As a result of the decorator, the function returns an initialized class. Do not call this.
If you use a class, not a function, it is sufficient to inherit from the desired class and use within the parent. Personally, I am impressed to use the classes, since then working autocompletion in my IDE ๏
#Example For example, let's create a block for the search form on the page http://www.yandex.com:
from htmlelements import Page, find, TextInput, Button
class MainPage(Page):
def __init__(self, driver):
super(MainPage, self).__init__(driver)
@find(css=".input__control.input__input", element_name="Search narrow")
class SearchNarrow(TextInput):
pass
@find(xpath="//button[contains(@class, 'button_theme_websearch')]", element_name="search button")
def search_button(self):
return Button
def search(self, text):
self.SearchNarrow.send_keys(text, clear=True)
self.search_button.click()
Enjoy)