Webapp Internal
- class tir.technologies.webapp_internal.WebappInternal(config_path='', autostart=True)
Internal implementation of Protheus Webapp class.
This class contains all the methods defined to run Selenium Interface Tests on Protheus Webapp.
Internal methods should have the [Internal] tag and should not be accessible to the user.
- Parameters:
config_path (str) – The path to the config file. - Default: “” (empty string)
autostart – Sets whether TIR should open browser and execute from the start. - Default: True
- Type:
Usage:
>>> # Inside __init__ method in Webapp class of main.py >>> def __init__(self, config_path="", autostart=True): >>> self.__webapp = WebappInternal(config_path, autostart)
- AddParameter(parameter, branch, portuguese_value, english_value='', spanish_value='')
Adds a parameter to the queue of parameters to be set by SetParameters method.
- Parameters:
Usage:
>>> # Calling the method: >>> oHelper.AddParameter("MV_MVCSA1", "", ".F.", ".F.", ".F.")
- AddProcedure(procedure, group)
Install/Desinstall a procedure in CFG to be set by SetProcedures method.
- Parameters:
procedure – The procedure to be clicked in edit screen.
group – The group name.
Usage:
>>> # Calling the method: >>> oHelper.AddProcedure("01", "T1")
- ChangeEnvironment(date='', group='', branch='', module='')
Clicks on the change environment area of Protheus Webapp and fills the environment screen.
- Parameters:
date (str) – The date to fill on the environment screen. - Default: “” (empty string)
group (str) – The group to fill on the environment screen. - Default: “” (empty string)
branch (str) – The branch to fill on the environment screen. - Default: “” (empty string)
module (str) – The module to fill on the environment screen. - Default: “” (empty string)
Usage:
>>> # Calling the method: >>> oHelper.ChangeEnvironment(date="13/11/2018", group="T1", branch="D MG 01 ")
- ChangeUser(user, password, initial_program='', date='', group='', branch='')
Change the user then init protheus on home page.
- Parameters:
initial_program (str) – The initial program to load. - Default: “” (previous initial_program)
date (str) – The date to fill on the environment screen. - Default: “” (previous date)
group (str) – The group to fill on the environment screen. - Default: “previous date group”
branch (str) – The branch to fill on the environment screen. - Default: “previous branch”
Usage:
>>> # Calling the method: >>> oHelper.ChangeUser("userTest", "a", "SIGAFAT", "18/08/2018", "T1", "D MG 01 ") >>> #------------------------------------------------------------------------ >>> # Calling the method: >>> oHelper.ChangeUser(user="user08", password="8" ) >>> #------------------------------------------------------------------------
- CheckHelp(text, button, text_help, text_problem, text_solution, verbosity)
Checks if some help screen is present in the screen at the time and takes an action.
- Parameters:
Usage:
>>> # Calling method to check all window text. >>> oHelper.CheckHelp("TK250CADRE Problema: Essa reclamação já foi informada anteriormente. Solução: Informe uma reclamação que ainda não tenha sido cadastrada nessa tabela.", "Fechar") >>> # Calling method to check help text only. >>> oHelper.CheckHelp(text_help="TK250CADRE", button="Fechar") >>> # Calling method to check problem text only. >>> oHelper.CheckHelp(text_problem="Problema: Essa reclamação já foi informada anteriormente.", button="Fechar") >>> # Calling method to check problem text only. >>> oHelper.CheckHelp(text_solution="Solução: Informe uma reclamação que ainda não tenha sido cadastrada nessa tabela.", button="Fechar") >>> # Calling the method to check only the problem text with high precision. >>> oHelper.CheckHelp(text_problem="Problema: Essa reclamação já foi informada anteriormente.", button="Fechar", verbosity=True)
- CheckResult(field, user_value, grid=False, line=1, grid_number=1, name_attr=False, input_field=True, direction=None, grid_memo_field=False, position=1, ignore_case=True)
Checks if a field has the value the user expects.
- Parameters:
field (str) – The field or label of a field that must be checked.
user_value (str) – The value that the field is expected to contain.
grid (bool) – Boolean if this is a grid field or not. - Default: False
line (int) – Grid line that contains the column field to be checked.- Default: 1
grid_number (int) – Grid number of which grid should be checked when there are multiple grids on the same screen. - Default: 1
name_attr (bool) – Boolean if search by Name attribute must be forced. - Default: False
input_field – False if the desired field is not an input type
:type bool :param direction: Desired direction to search for the element, currently accepts right and down :type str :param grid_memo_field: Boolean if this is a memo grid field. - Default: False :type grid_memo_field: bool
Usage:
>>> # Calling method to check a value of a field: >>> oHelper.CheckResult("A1_COD", "000001") >>> #----------------------------------------- >>> # Calling method to check a field that is on the second line of a grid: >>> oHelper.CheckResult("Client", "000001", grid=True, line=2) >>> oHelper.LoadGrid() >>> #----------------------------------------- >>> # Calling method to check a field that is on the second grid of the screen: >>> oHelper.CheckResult("Order", "000001", grid=True, line=1, grid_number=2) >>> oHelper.LoadGrid() >>> #----------------------------------------- >>> # Call method to check a field value that is not an input field and is on the right: >>> oHelper.CheckResult("Saldo Titulo", "100.000,00", input_field=False, direction='right') >>> oHelper.LoadGrid()
- CheckView(text, element_type='help')
Checks if a certain text is present in the screen at the time and takes an action.
“help” - alerts with messages of errors.
- Parameters:
Usage:
>>> # Calling the method. >>> oHelper.CheckView("Processing") >>> #----------------------------------------- >>> # Calling method to input value on a field that is on the second grid of the screen: >>> oHelper.CheckView("Text",element_type=text-view) >>> #-----------------------------------------
- ClickBox(fields='', content_list='', select_all=False, grid_number=1, itens=False)
Clicks on Checkbox elements of a grid.
- Parameters:
fields (str) – Comma divided string with values that must be checked, combine with content_list.
content_list (str) – Comma divided string with values that must be checked. - Default: “” (empty string)
select_all (bool) – Boolean if all options should be selected. - Default: False
grid_number (int) – Which grid should be used when there are multiple grids on the same screen. - Default: 1
itens (bool) – Bool parameter that click in all itens based in the field and content reference.
Usage:
>>> # Calling the method to select a specific checkbox: >>> oHelper.ClickBox("Branch", "D MG 01 ") >>> #-------------------------------------------------- >>> # Calling the method to select multiple checkboxes: >>> oHelper.ClickBox("Branch", "D MG 01 , D RJ 02") >>> #-------------------------------------------------- >>> # Calling the method to select all checkboxes: >>> oHelper.ClickBox("Branch", select_all=True) >>> #-------------------------------------------------- >>> # Calling the method to performe click based in 2 fields and contens: >>> test_helper.ClickBox('Numero da SC, Item da SC', 'COM068, 0001') >>> #-------------------------------------------------- >>> # Calling the method to click in all itens with this reference: >>> test_helper.ClickBox('Numero da SC', 'COM068', itens=True)
- ClickCheckBox(label_box_name, position=1, double_click=False)
Clicks on a Label in box on the screen.
- Parameters:
Usage:
>>> # Call the method: >>> oHelper.ClickCheckBox("Search",1)
- ClickFolder(folder_name, position)
Clicks on folder elements on the screen.
- Parameters:
Usage:
>>> # Calling the method: >>> oHelper.ClickFolder("Folder1") >>> # Second folder named as Folder1 in the same screen >>> oHelper.ClickFolder("Folder1", position=2)
- ClickGridCell(column, row_number=1, grid_number=1)
Clicks on a Cell of a Grid.
- Parameters:
Usage:
>>> # Calling the method: >>> oHelper.ClickGridCell("Product", 1)
- ClickGridHeader(column=1, column_name='', grid_number=1)
Clicks on a Cell of a Grid Header.
- Parameters:
Usage:
>>> # Calling the method: >>> oHelper.ClickGridHeader(column = 1 , grid_number = 1) >>> oHelper.ClickGridHeader(column_name = 'Código' , grid_number = 1) >>> oHelper.ClickGridHeader(column = 1 , grid_number = 2)
- ClickIcon(icon_text, position=1)
Clicks on an Icon button based on its tooltip text or Alt attribute title.
- Parameters:
Usage:
>>> # Call the method: >>> oHelper.ClickIcon("Add") >>> oHelper.ClickIcon("Edit")
- ClickImage(img_name, double_click=False)
Clicks in an Image button. They must be used only in case that ‘ClickIcon’ doesn’t support. :param img_name: Image to be clicked. :type img_name: src
Usage:
>>> # Call the method: >>> oHelper.ClickImage("img_name") >>> oHelper.ClickImage("img_name",double_click=True)
- ClickLabel(label_name, position=0)
Clicks on a Label on the screen.
- Parameters:
label_name (str) – The label name
Usage:
>>> # Call the method: >>> oHelper.ClickLabel("Search")
- ClickListBox(text)
Clicks on Item based in a text in a window tlistbox
- Parameters:
text (str) – Text in windows to be clicked.
Usage:
>>> # Calling the method. >>> oHelper.ClickListBox("text")
- ClickMenuPopUpItem(label, right_click, position=1)
Clicks on MenuPopUp Item based in a text
- Parameters:
Usage:
>>> # Calling the method. >>> oHelper.ClickMenuPopUpItem("Label") >>> # Calling the method using position. >>> oHelper.ClickMenuPopUpItem("Label", position = 2)
- ClickTree(treepath, right_click=False, position=1, tree_number=0)
Clicks on TreeView component.
- Parameters:
treepath – String that contains the access path for the item separate by “>” .
right_click – Clicks with the right button of the mouse in the last element of the tree.
tree_number – Tree position for cases where there is more than one tree on exibits.
Usage:
>>> # Calling the method: >>> oHelper.ClickTree("element 1 > element 2 > element 3") >>> # Right Click example: >>> oHelper.ClickTree("element 1 > element 2 > element 3", right_click=True)
- Finish()
Exit the protheus Webapp.
Usage:
>>> # Calling the method. >>> oHelper.Finish()
- GetLineNumber(values=[], columns=[], grid_number=0)
- Parameters:
values – values composition expected in respective columns
columns – reference columns used to get line
grid_number –
- Returns:
- GetText(string_left='', string_right='')
This method returns a string from modal based on the string in the left or right position that you send on parameter.
If the string_left was filled then the right side content is return.
If the string_right was filled then the left side content is return.
If no parameter was filled so the full content is return.
- Parameters:
Usage:
>>> # Calling the method: >>> oHelper.GetText(string_left="Left Text", string_right="Right Text") >>> oHelper.GetText(string_left="Left Text") >>> oHelper.GetText()
- GetValue(field, grid=False, line=1, grid_number=1, grid_memo_field=False, position=0)
Gets the current value or text of element.
- Parameters:
field (str) – The field or label of a field that must be checked.
grid (bool) – Boolean if this is a grid field or not. - Default: False
line (int) – Grid line that contains the column field to be checked.- Default: 1
grid_number (int) – Grid number of which grid should be checked when there are multiple grids on the same screen. - Default: 1
grid_memo_field (bool) – Boolean if this is a memo grid field. - Default: False
position (int) – Position which duplicated element is located. - Default: 1
Usage:
>>> # Calling the method: >>> current_value = oHelper.GetValue("A1_COD")
- GridTree(column, tree_path, right_click=False)
Clicks on Grid TreeView component.
- Parameters:
treepath – String that contains the access path for the item separate by “>” .
right_click – Clicks with the right button of the mouse in the last element of the tree.
Usage:
>>> # Calling the method: >>> oHelper.GridTree("element 1 > element 2 > element 3") >>> # Right GridTree example: >>> oHelper.GridTree("element 1 > element 2 > element 3", right_click=True)
- LengthGridLines(grid)
Returns the length of the grid. :return:
- LoadGrid()
This method is responsible for running all actions of the input and check queues of a grid. After running, the queues would be empty.
Must be called after SetValue and CheckResult calls that has the grid parameter set to True.
Usage:
>>> # After SetValue: >>> oHelper.SetValue("A1_COD", "000001", grid=True) >>> oHelper.LoadGrid() >>> #-------------------------------------- >>> # After CheckResult: >>> oHelper.CheckResult("A1_COD", "000001", grid=True, line=1) >>> oHelper.LoadGrid()
- LogOff()
Logs out of the Protheus Webapp.
Usage:
>>> # Calling the method. >>> oHelper.LogOff()
- MessageBoxClick(button_text)
Clicks on desired button inside a Messagebox element.
- Parameters:
button_text (str) – Desired button to click.
Usage:
>>> # Calling the method: >>> oHelper.MessageBoxClick("Ok")
- Program(program_name)
Method that sets the program in the initial menu search field.
Note
Only used when the Initial Program is the module Ex: SIGAFAT.
- Parameters:
program_name (str) – The program name
Usage:
>>> # Calling the method: >>> oHelper.Program("MATA020")
- RestoreParameters()
Restores parameters to previous value in CFG screen. Should be used after a SetParameters call.
Usage:
>>> # Adding Parameter: >>> oHelper.AddParameter("MV_MVCSA1", "", ".F.", ".F.", ".F.") >>> # Calling the method: >>> oHelper.SetParameters()
- ScrollGrid(column, match_value, grid_number=1)
Scrolls Grid until a matching column is found.
- Parameters:
Usage:
>>> # Calling the method to scroll to a column match: >>> oHelper.ScrollGrid(column="Branch",match_value="D MG 01 ") >>> #-------------------------------------------------- >>> # Calling the method to scroll to a column match of the second grid: >>> oHelper.ScrollGrid(column="Branch", match_value="D MG 01 ", grid_number=2)
- SearchBrowse(term, key=None, identifier=None, index=False, column=None)
Searchs a term on Protheus Webapp.
It will search using the default search key, but if a key is provided it will search using the chosen key.
It will search using the first search box on the screen, but if an identifier is provided, it will search on the chosen search box.
- Parameters:
term (str) – The term that must be searched.
key (str) – The search key to be chosen on the search dropdown. - Default: None
identifier (str) – The identifier of the search box. If none is provided, it defaults to the first of the screen. - Default: None
index (bool) – Whether the key is an index or not. - Default: False
Usage:
>>> # To search using the first search box and default search key: >>> oHelper.SearchBrowse("D MG 001") >>> #------------------------------------------------------------------------ >>> # To search using the first search box and a chosen key: >>> oHelper.SearchBrowse("D MG 001", key="Branch+id") >>> #------------------------------------------------------------------------ >>> # To search using a chosen search box and the default search key: >>> oHelper.SearchBrowse("D MG 001", identifier="Products") >>> #------------------------------------------------------------------------ >>> # To search using a chosen search box and a chosen search key: >>> oHelper.SearchBrowse("D MG 001", key="Branch+id", identifier="Products") >>> #------------------------------------------------------------------------ >>> # To search using the first search box and a chosen column: >>> oHelper.SearchBrowse("D MG 001", column="Branch+id") >>> #------------------------------------------------------------------------
- SetBranch(branch)
Chooses the branch on the branch selection screen.
- Parameters:
branch (str) – The branch that would be chosen.
Usage:
>>> # Calling the method: >>> oHelper.SetBranch("D MG 01 ")
- SetButton(button, sub_item='', position=1, check_error=True)
Method that clicks on a button on the screen.
- Parameters:
> ⚠️ Warning: > If there are a sequence of similar buttons. Example: self.oHelper.SetButton(“Salvar”) self.oHelper.SetButton(“Salvar”) We recomend insert some wait of elements method between them, like WaitShow, WaitHide… etc. This way you ensure the correct element be selected in correct screen.
Usage:
>>> # Calling the method to click on a regular button: >>> oHelper.SetButton("Add") >>> #------------------------------------------------- >>> # Calling the method to click on a sub item inside a button. >>> oHelper.SetButton("Other Actions", "Process") >>> #------------------------------------------------- >>> # Calling the method to click on a sub item inside a button, this form is an alternative. >>> oHelper.SetButton("Other Actions", "Process, Process_02, Process_03")
- SetCalendar(day='', month='', year='', position=0)
Set date on Calendar without input field
- SetFilePath(value, button='')
Fills the path screen with the desired path
Warning
Necessary informed the button name or the program will select the current button name.
Usage:
>>> # Calling the method: >>> oHelper.SetFilePath(r"C:\folder") >>> oHelper.SetFilePath(r"C:\folder","save")
- SetFocus(field, grid_cell, row_number, position)
Sets the current focus on the desired field.
- Parameters:
Usage:
>>> # Calling the method: >>> oHelper.SetFocus("A1_COD") >>> oHelper.SetFocus("A1_COD", grid_cell = True)
- SetKey(key, grid=False, grid_number=1, additional_key='', wait_show='', step=3, wait_change=False)
Press the desired key on the keyboard on the focused element.
Warning
If this methods is the first to be called, we strongly recommend using some wait methods like WaitShow().
Warning
Before using this method, set focus on any element.
Supported keys: F1 to F12, CTRL+Key, ALT+Key, Up, Down, Left, Right, ESC, Enter and Delete …
- Parameters:
key (str) – Key that would be pressed
grid (bool) – Boolean if action must be applied on a grid. (Usually with DOWN key)
grid_number (int :param additional_key: Key additional that would be pressed.) – Grid number of which grid should be used when there are multiple grids on the same screen. - Default: 1
wait_show (str) – String that will hold the wait after press a key.
step (float) – The amount of time each step should wait. - Default: 3
wait_change (Bool) – Bool when False it skips the wait for html changes.
Usage:
>>> # Calling the method: >>> oHelper.SetKey("ENTER") >>> #-------------------------------------- >>> # Calling the method on a grid: >>> oHelper.SetKey("DOWN", grid=True) >>> #-------------------------------------- >>> # Calling the method on the second grid on the screen: >>> oHelper.SetKey("DOWN", grid=True, grid_number=2) >>> #-------------------------------------- >>> # Call the method with WaitShow when you expect a new window or text to appear on the screen: >>> oHelper.SetKey( key = "F12", wait_show="Parametros", step = 3 ) >>> #-------------------------------------- >>> # Calling the method with special keys (using parameter additional_key): >>> oHelper.SetKey(key="CTRL", additional_key="A")
- SetLateralMenu(menu_itens, save_input=True, click_menu_functional=False)
Navigates through the lateral menu using provided menu path. e.g. “MenuItem1 > MenuItem2 > MenuItem3”
- Parameters:
Usage:
>>> # Calling the method: >>> oHelper.SetLateralMenu("Updates > Registers > Products > Groups")
- SetParameters()
Sets the parameters in CFG screen. The parameters must be passed with calls for AddParameter method.
Usage:
>>> # Adding Parameter: >>> oHelper.AddParameter("MV_MVCSA1", "", ".F.", ".F.", ".F.") >>> # Calling the method: >>> oHelper.SetParameters()
- SetProcedures(is_procedure_install=True)
Sets the procedures in CFG screen. The procedures must be passed with calls for AddProcedure method.
Usage:
- Parameters:
is_procedure_install – If True will install the procedure.
>>> # Adding procedures: >>> oHelper.AddProcedure("19", "T1") >>> # Calling the method: >>> oHelper.SetProcedures(is_procedure_install=True)
- SetTabEDAPP(table)
Chooses the table on the generic query (EDAPP).
- Parameters:
table (str) – The table that would be chosen.
Usage:
>>> # Calling the method: >>> oHelper.SetTabEDAPP("AAB")
- SetValue(field, value, grid=False, grid_number=1, ignore_case=True, row=None, name_attr=False, position=1, check_value=None, grid_memo_field=False, range_multiplier=None, direction=None, duplicate_fields=[])
Sets value of an input element.
Note
Attention on the grid use the field mask.
- Parameters:
field (str) – The field name or label to receive the value
value (str or bool) – The value to be inputted on the element.
grid (bool) – Boolean if this is a grid field or not. - Default: False
grid_number (int) – Grid number of which grid should be inputted when there are multiple grids on the same screen. - Default: 1
ignore_case (bool) – Boolean if case should be ignored or not. - Default: True
check_value – Boolean ignore input check - Default: True
row (int) – Row number that will be filled
name_attr (int) – Boolean if search by Name attribute must be forced. - Default: False
position – Position should be used to select an especific element when there is more than one of same
grid_memo_field (bool) – Boolean if this is a memo grid field. - Default: False
range_multiplier (int) – Integer value that refers to the distance of the label from the input object. The safe value must be between 1 to 10.
direction (str) – Desired direction to search for the element from a label, currently accepts right and down.
Usage:
>>> # Calling method to input value on a field: >>> oHelper.SetValue("A1_COD", "000001") >>> #----------------------------------------- >>> # Calling method to input value on a field from a label text and looking an input field for a specific direction: >>> oHelper.SetValue("Codigo", "000001", direction='right') >>> #----------------------------------------- >>> # Calling method to input value on a field that is a grid: >>> oHelper.SetValue("Client", "000001", grid=True) >>> oHelper.LoadGrid() >>> #----------------------------------------- >>> # Calling method to checkbox value on a field that is a grid: >>> oHelper.SetValue('Confirmado?', True, grid=True) >>> oHelper.LoadGrid() >>> #----------------------------------------- >>> # Calling method to checkbox value on a field that isn't a grid: >>> oHelper.SetValue('', True, name_attr=True, position=1) >>> #----------------------------------------- >>> # Calling method to input value on a field that is on the second grid of the screen: >>> oHelper.SetValue("Order", "000001", grid=True, grid_number=2) >>> oHelper.LoadGrid() >>> #----------------------------------------- >>> # Calling method to input value on a field that is a grid *Will not attempt to verify the entered value. Run only once.* : >>> oHelper.SetValue("Order", "000001", grid=True, grid_number=2, check_value = False) >>> oHelper.LoadGrid() >>> # Calling method to input value in cases that have duplicate fields: >>> oHelper.SetValue('Tipo Entrada' , '073', grid=True, grid_number=2, name_attr=True) >>> self.oHelper.SetValue('Tipo Entrada' , '073', grid=True, grid_number=2, name_attr=True, duplicate_fields=['tipo entrada', 10]) >>> oHelper.LoadGrid()
- Setup(initial_program, date='', group='99', branch='01', module='', save_input=True)
Prepare the Protheus Webapp for the test case, filling the needed information to access the environment.
- Parameters:
initial_program (str) – The initial program to load.
date (str) – The date to fill on the environment screen. - Default: “” (empty string)
group (str) – The group to fill on the environment screen. - Default: “99”
branch (str) – The branch to fill on the environment screen. - Default: “01”
module (str) – The module to fill on the environment screen. - Default: “” (empty string)
save_input (bool) – Boolean if all input info should be saved for later usage. Leave this flag ‘True’ if you are not sure. Default: True
Usage:
>>> # Calling the method: >>> oHelper.Setup("SIGAFAT", "18/08/2018", "T1", "D MG 01 ")
- SetupTSS(initial_program='', enviroment='')
Prepare the Protheus Webapp TSS for the test case, filling the needed information to access the environment. .. note:
This method use the user and password from config.json.
- Parameters:
Usage:
>>> # Calling the method: >>> oHelper.SetupTSS("TSSMANAGER", "SPED")
- TearDown()
Closes the webdriver and ends the test case.
Usage:
>>> #Calling the method >>> self.TearDown()
- WaitFieldValue(field, expected_value)
Wait until field has expected value. Recommended for Trigger fields.
Usage:
>>> # Calling method: >>> self.WaitFieldValue("CN0_DESCRI", "MY DESCRIPTION")
- WaitHide(string, timeout=None, throw_error=True)
Search string that was sent and wait hide the element.
- Parameters:
string (str) – String that will hold the wait.
Usage:
>>> # Calling the method: >>> oHelper.WaitHide("Processing")
- WaitProcessing(itens, timeout=None)
Uses WaitShow and WaitHide to Wait a Processing screen
- Parameters:
itens (str) – List of itens that will hold the wait.
Usage:
>>> # Calling the method: >>> oHelper.WaitProcessing("Processing")
- WaitShow(string, timeout=None, throw_error=True)
Search string that was sent and wait show the elements.
- Parameters:
string (str) – String that will hold the wait.
Usage:
>>> # Calling the method: >>> oHelper.WaitShow("Processing")
- add_grid_row_counter(grid)
[Internal]
Adds the counter of rows to the global dictionary.
- Parameters:
grid (BeautifulSoup object.) – The grid whose rows are being controlled.
Usage:
>>> # Calling the method: >>> self.add_grid_row_counter(grid)
- assert_result(expected, script_message)
[Internal]
Asserts the result based on the expected value.
- Parameters:
expected (bool) – Expected value
Usage :
>>> #Calling the method: >>> self.assert_result(True)
- blocker_containers(soup)
Return The container index by z-index and filter if it is displayed
- Parameters:
soup – soup object
- Returns:
The container index by z-index and filter if it is displayed
- change_environment_element_home_screen()
[Internal]
This method wait the element to perform ChangeEnvirionmentm return a soup element.
Usage:
>>> # Calling the method: >>> self.change_environment_element_home_screen()
- check_blocked_container(blocker_container_soup)
- Returns:
- check_combobox(element)
- Parameters:
element –
- Returns:
Return True if the field is a combobox
- check_dmp_file()
[Internal]
- check_element_tab_view(element)
[Internal]
- check_element_tooltip(element, expected_text, contains=False)
[Internal]
Internal method of ClickIcon.
Fires the MouseOver event of an element, checks tooltip text, fires the MouseOut event and returns a boolean whether the tooltip has the expected text value or not.
- Parameters:
element (BeautifulSoup object) – The target element object.
expected_text (str) – The text that is expected to exist in button’s tooltip.
- Returns:
Boolean value whether element has tooltip text or not.
- Return type:
Usage:
>>> # Call the method: >>> has_add_text = self.check_element_tooltip(button_object, "Add")
- check_file(base_file='', current_file='')
- Parameters:
base_file –
current_file –
- Returns:
- check_grid(field, x3_dictionaries, get_value=False, position=0)
[Internal]
Checks the grid cell with the passed parameters.
- Parameters:
field (List of values) – An item from the grid’s check queue
x3_dictionaries (Tuple of dictionaries) – Tuple of dictionaries containing information extracted from x3.
get_value (bool) – Boolean value if check_grid should return its value.
- Returns:
If get_value flag is True, it will return the captured value.
- Return type:
str
Usage:
>>> # Calling the method: >>> self.check_grid([0, "A1_COD", "000001", 0], x3_dictionaries, False)
- check_grid_appender(line, column, value=None, grid_number=0, position=1, ignore_case=True)
[Internal]
Adds a value to the check queue of a grid.
- Parameters:
Usage:
>>> # Calling the method: >>> self.check_grid_appender(0,"A1_COD", "000001", 0)
- check_grid_error(grid, headers, column_name, rows, columns, field)
[Internal]
- check_grid_memo(element)
[Internal] :param element: :return:
- check_hierarchy(label, check_expanded=True)
- Parameters:
label –
- Returns:
True or False
- check_layers(term)
[Internal]
- check_mask(element)
[Internal]
Checks whether the element has a mask or not.
- Parameters:
element (Selenium object) – The element that must be checked.
- Returns:
Boolean if element has a mask or not.
- Return type:
Usage:
>>> # Calling the method: >>> self.check_mask(my_element)
- check_mot_exec()
Check MotExec key content
- Returns:
[Internal]
- check_toggler(label_filtered, element)
[Internal]
- check_toggler_shadow(element)
[Internal]
- children_element_count(element_selector, children_selector)
[Internal]
Returns the count of elements of a certain CSS Selector that exists within a certain element located also via CSS Selector.
- Parameters:
- Returns:
The count of elements matching the children_selector inside of element_selector.
- Return type:
Usage:
>>> # Calling the method: >>> self.children_element_count(".tmenu", ".tmenuitem")
- clear_grid()
[Internal]
Empties the global grid list variables.
Usage:
>>> # Calling the method: >>> self.clear_grid()
- click_button_finish(click_counter=None)
[internal]
This method is reponsible to click on button finish
- click_button_logoff(click_counter=None)
[internal]
This method is reponsible to click on button finish
- click_check_radio_button(field, value, name_attr=False, position=1, direction=None)
[Internal] Identify and click on check or radio button.
- Parameters:
- Returns:
The element that changed value.
- Return type:
Selenium object
Usage:
>>> # Calling the method: >>> element = self.check_checkbox("CheckBox1", True)
- click_grid_td(td_soup)
Click on a td element and checks if is selected
- Parameters:
td (bs4 element) – The column to be matched.
>>> # Calling the method to click on td and check if is selected: >>> oHelper.click_grid_td(td)
[Internal]
Clicks on the sub menu of buttons. Returns True if succeeded. Internal method of SetButton.
- Parameters:
filtered_sub_itens (str) – The menu item that should be clicked.
- Returns:
Boolean if click was successful.
- Return type:
Usage:
>>> # Calling the method: >>> self.click_sub_menu("Process")
- click_tree(treepath, right_click, position, tree_number)
[Internal] Take treenode and label to filter and click in the toggler element to expand the TreeView.
- clicktree_status_selected(label_filtered, check_expanded=False)
[Internal]
- close_coin_screen()
[Internal]
Closes the coin screen.
Usage:
>>> # Calling the method: >>> self.close_coin_screen()
- close_coin_screen_after_routine()
[internal] This method is responsible for closing the “coin screen” that opens after searching for the routine
- close_modal()
[Internal]
This method closes the modal in the opening screen.
Usage:
>>> # Calling the method: >>> self.close_modal()
- close_news_screen()
[Internal]
Closes the news do programa screen.
Usage:
>>> # Calling the method: >>> self.close_news_screen()
- close_news_screen_after_routine()
[internal] This method is responsible for closing the “news screen” that opens after searching for the routine
- close_process()
[Internal]
- close_resolution_screen()
[Internal]
Closes the Alert of resolution screen.
Usage:
>>> # Calling the method: >>> self.close_resolution_screen()
- close_warning_screen()
[Internal] Closes the warning screen.
Usage: >>> # Calling the method: >>> self.close_warning_screen()
- close_warning_screen_after_routine()
[internal] This method is responsible for closing the “warning screen” that opens after searching for the routine
- containers_filter(containers)
[Internal] Filter and remove tsvg class an return a container_filtered
Usage:
>>> #Calling the method >>> containers = self.containers_filter(containers)
- create_auto_file(file='')
- Parameters:
file –
- Returns:
- create_message(args, message_type=MessageType.CORRECT)
[Internal]
Returns default messages used all throughout the class based on input parameters.
Each message type has a different number of placeholders to be passed as a list through args parameter:
Correct Message = “{} Value of field {} is correct!” - 2 placeholders
Incorrect Message = “{} Value expected for field “{}” ({}) is not equal to what was found ({}).” - 3 placeholders
Disabled Message = “{} Field “{}” is disabled.” - 2 placeholders
AssertError Message = “Failed: Value expected for field {}: “{}” is different from what was found “{}”.” - 2 placeholders
- Parameters:
args (List of str) – A list of strings to be replaced in each message.
message_type (enum.MessageType) – Enum of which message type should be created. - Default: enum.MessageType.Correct
Usage:
>>> # Calling the method: >>> message = self.create_message([txtaux, field, user_value, captured_value], enum.MessageType.INCORRECT)
- create_x3_tuple()
[Internal]
Returns a tuple of dictionaries of field information based on all fields in the grid queues.
- Returns:
A tuple containing the needed x3 information.
- Return type:
Tuple of Dictionaries
Usage:
>>> # Calling the method: >>> x3_dictionaries = self.create_x3_tuple()
- current_wa_tab_view_id()
[Internal]
- date_format(date)
- Parameters:
date –
- Returns:
- driver_refresh()
[Internal]
Refresh the driver.
Usage:
>>> # Calling the method: >>> self.driver_refresh()
- element_exists(term, scrap_type=ScrapType.TEXT, position=0, optional_term='', main_container='.tmodaldialog,.ui-dialog,wa-text-input', check_error=True, twebview=False, second_term=None)
[Internal]
Returns a boolean if element exists on the screen.
- Parameters:
term (str) – The first term to use on a search of element
scrap_type (enum.ScrapType) – Type of element search. - Default: enum.ScrapType.TEXT
position (int) – Position which element is located. - Default: 0
optional_term (str) – Second term to use on a search of element. Used in MIXED search. - Default: “” (empty string)
- Returns:
True if element is present. False if element is not present.
- Return type:
Usage:
>>> element_is_present = element_exists(term=".ui-dialog", scrap_type=enum.ScrapType.CSS_SELECTOR) >>> element_is_present = element_exists(term=".tmodaldialog.twidget", scrap_type=enum.ScrapType.CSS_SELECTOR, position=initial_layer+1) >>> element_is_present = element_exists(term=text, scrap_type=enum.ScrapType.MIXED, optional_term=".tsay")
- element_is_displayed(element=None, twebview=False)
[Internal]
- environment_screen(change_env=False)
[Internal]
Fills the environment screen of Protheus with the values passed on the Setup method. Used to fill the fields triggered by the ChangeEnvironment method as well.
- Parameters:
change_env (bool) – Boolean if the method is being called by ChangeEnvironment. - Default: False
Usage:
>>> # Calling the method >>> self.environment_screen()
- expand_treeGrid(column, item)
[Internal]
Search for a column and expand the tree Returns len of grid lines
- expand_tree_grid_line(element_soup)
[Internal] Click on a column and send the ENTER key
- fill_grid(field, x3_dictionaries, initial_layer, duplicate_fields=[])
[Internal]
Fills the grid cell with the passed parameters.
- Parameters:
field (List of values) – An item from the grid’s input queue
x3_dictionaries (Tuple of dictionaries) – Tuple of dictionaries containing information extracted from x3.
initial_layer (int) – The initial layer of elements of Protheus Webapp
Usage:
>>> # Calling the method: >>> self.fill_grid(["A1_COD", "000001", 0, False], x3_dictionaries, 0)
- fill_parameters(restore_backup)
[Internal]
Internal method of fill_parameters. Searches and edits all parameters in the queue.
- Parameters:
restore_backup (bool) – Boolean if method should restore the parameters.
Usage:
>>> # Calling the method: >>> self.fill_parameters(restore_backup=False)
- fill_search_browse(term, search_elements)
[Internal]
Fills search input method and presses the search button.
- Parameters:
term (str) – The term to be searched
search_elements (Tuple of Beautiful Soup objects) – Tuple of Search elements
Usage:
>>> #Preparing the tuple: >>> search_elements = self.get_search_browse_elements("Products") >>> # Calling the method: >>> self.fill_search_browse("D MG 01", search_elements)
- filling_branch(shadow_root=None, container=None)
[Internal]
- filling_date(shadow_root=None, container=None)
[Internal]
- filling_environment(shadow_root=None, container=None)
[Internal]
- filling_group(shadow_root=None, container=None)
[Internal]
- filter_active_tabs(object)
- Parameters:
object –
- Returns:
return the object if parent wa-tab-page is active else []
- filter_by_direction(xy_label, width_safe, height_safe, position_list, direction=None)
[Internal]
- filter_by_tooltip_value(element_list, expected_text)
[Internal]
Filters elements by finding the tooltip value that is shown when mouseover event is triggered.
- Parameters:
element_list (Beautiful Soup object list) – The list to be filtered
expected_text (str) – The expected tooltip text.
- Returns:
The filtered list of elements.
- Return type:
Beautiful Soup object list
Usage:
>>> # Calling the method: >>> filtered_elements = self.filter_by_tooltip_value(my_element_list, "Edit")
- filter_dataframe(df, column, value)
[Internal]
- filter_is_displayed(elements)
[Internal] Returns only displayed elements.
Usage:
>>> #Calling the method >>> elements = self.filter_is_displayed(elements)
- filter_label_element(label_text, container, position, twebview=False)
[Internal] Filter and remove a specified character with regex, return only displayed elements if > 1.
Usage:
>>> #Calling the method >>> elements = self.filter_label_element(label_text, container)
- filter_not_read_only(list_objects)
[Internal]
Return: Objects List not read only
- find_child_element(term, element)
Waits and find for shadow elements in a beautiful soup object and returns a list of elements found
>>> # Calling the method: >>> find_element(".dict-tmenuitem", bs4_element)
- find_label_element(label_text, container=None, position=1, input_field=True, direction=None)
[Internal]
Find input element next to label containing the label_text parameter.
- Parameters:
label_text (str) – The label text to be searched
container (BeautifulSoup object) – The main container object to be used
- Returns:
A list containing a BeautifulSoup object next to the label
- Return type:
List of BeautifulSoup objects
Usage:
>>> self.find_label_element("User:", container_object)
[Internal]
Finds the menu item inside child menu layers.
- Parameters:
sub_item (str) – The menu item that should be clicked.
containers (List of Beautiful Soup objects) – The menu itens of the current layer that have children.
- Returns:
The item that was found. If None was found, it returns an empty string.
- Return type:
Selenium object
Usage:
>>> # Calling the method: >>> item = self.find_sub_menu_child("Process", container_list)
[Internal]
Returns a tuple containing a possible match of a menu item among the current itens. If none was found it will be an empty string.
The second position will contain the itens that have children itens. If none has children itens, it will be an empty list.
- Parameters:
menu_item (str) – The menu item that should be clicked.
current_item (List of Selenium objects.) – The menu itens in the current layer.
- Returns:
Tuple containing a possible match of a menu item and the itens that have children itens.
- Return type:
Tuple (selenium object, list of selenium objects)
Usage:
>>> # Calling the method: >>> result = self.find_sub_menu_text(item, child_itens)
- find_tree_bs(label, tree_number)
[Internal]
Search the label string in current container and return a treenode element.
- generate_regex_by_prefixes(prefixes)
[Internal]
Returns a regex string created by combining all field prefixes.
- Parameters:
prefixes (List of str) – Prefixes of fields to be combined in a regex.
Usage:
>>> # Calling the method: >>> regex = self.generate_regex_by_prefixes(field_prefixes)
- get_active_parent_class(element=None)
Returns class list of an element’s parent
- get_all_containers()
[Internal]
An internal method designed to get all containers. Returns the List of BeautifulSoup object that represents this containers or NONE if nothing is found.
- Returns:
List containers object
- Return type:
List BeautifulSoup object
Usage:
>>> # Calling the method: >>> container = self.get_all_containers()
- get_checkbox_label(label_box_name, position)
Get checkbox from label name
- Parameters:
label_box_name – String
position – int
- Returns:
BS object
- get_config_value(json_key)
- Parameters:
json_key (str) – Json Key in config.json
- Returns:
Json Key item in config.json
- get_current_container()
[Internal]
An internal method designed to get the current container. Returns the BeautifulSoup object that represents this container or NONE if nothing is found.
- Returns:
The container object
- Return type:
BeautifulSoup object
Usage:
>>> # Calling the method: >>> container = self.get_current_container()
- get_current_shadow_root_container()
[Internal]
An internal method designed to get the current container. Returns the BeautifulSoup object that represents this container or NONE if nothing is found.
- Returns:
The container object
- Return type:
BeautifulSoup object
Usage:
>>> # Calling the method: >>> container = self.get_current_container()
- get_distance(label_pos, element_pos)
[internal]
- get_distance_x(x_label, x_element)
[Internal]
- get_distance_y(y_label, y_element)
[Internal]
- get_element_size(id)
Internal Return Height/Width
- get_enchoice_button_ids(layer)
[Internal]
If current layer level has an enchoice, returns all buttons’ ids.
- Parameters:
layer (int) – Current layer level that the application is.
- Returns:
List with enchoice’s buttons’ ids.
- Return type:
List of str
Usage:
>>> # Calling the method: >>> self.get_enchoice_button_ids(current_layer)
- get_field(field, name_attr=False, position=1, input_field=True, direction=None)
[Internal]
This method decides if field would be found by either it’s name or by it’s label. Internal method of input_value and CheckResult.
- Parameters:
- Returns:
Field element
- Return type:
Beautiful Soup object
Usage:
>>> # Calling the method: >>> element1 = self.get_field("A1_COD") >>> element2 = self.get_field("Product")
- get_function_from_stack()
[Internal]
Gets the function name that called the Webapp class from the call stack.
Usage:
>>> # Calling the method: >>> self.get_function_from_stack()
- get_grid(grid_number=0, grid_element=None, grid_list=False)
[Internal] Gets a grid BeautifulSoup object from the screen.
- Parameters:
grid_number – The number of the grid on the screen.
grid_element – Grid class name in HTML ex: “.tgrid”.
grid_list (bool) – Return all grids.
- Type:
- Type:
- Returns:
Grid BeautifulSoup object
- Return type:
BeautifulSoup object
Usage:
>>> # Calling the method: >>> my_grid = self.get_grid()
- get_grid_content(grid_number, grid_element)
- Parameters:
grid_number –
grid_element –
- Returns:
- get_headers_from_grids(grids, column_name='', position=0, duplicate_fields=[])
[Internal]
Returns the headers of each grid in grids parameter.
- Parameters:
grids (List of BeautifulSoup objects) – The grids to extract the headers.
- Returns:
List of Dictionaries with each header value and index.
- Return type:
List of Dict
Usage:
>>> # Calling the method: >>> headers = self.get_headers_from_grids(grids)
- get_language()
[Internal]
Gets the current language of the html.
- Returns:
The current language of the html.
- Return type:
Usage:
>>> # Calling the method: >>> language = self.get_language()
- get_obscure_gridline(grid, row_num=0)
[Internal] :param grid: :param row_num: :return obscured row based in row number:
- get_panel_name_index(panel_name)
[Internal]
Gets the index of search box element based on the panel name associated with it.
- Parameters:
panel_name –
- Returns:
The index of the search box starting with 0
- Return type:
Usage:
>>> # Calling the method: >>> index = self.get_panel_name_index("Products")
- get_position_from_bs_element(element)
[Internal]
- get_program_name()
[Internal]
- get_release()
Gets the current release of the Protheus.
- Returns:
The current release of the Protheus.
- Type:
Usage:
>>> # Calling the method: >>> self.get_release() >>> # Conditional with method: >>> # Situation: Have a input that only appears in release greater than or equal to 12.1.023 >>> if self.get_release() >= '12.1.023': >>> self.click(element)
- get_search_browse_elements(panel_name=None)
[Internal]
Returns a tuple with the search browse elements in this order: Key Dropdown, Input, Icon.
- Parameters:
panel_name (str) – The identifier of the search box. If none is provided, it defaults to the first of the screen. - Default: None
- Returns:
Tuple with the Key Dropdown, Input and Icon elements of a search box
- Return type:
Tuple of Beautiful Soup objects.
Usage:
>>> # Calling the method: >>> search_elements = self.get_search_browse_elements("Products")
- get_selected_row(rows)
[Internal]
From a list of rows, filter the selected one.
- Parameters:
rows (List of Beautiful Soup objects) – List of rows.
- Returns:
The selected row.
- Return type:
Beautiful Soup object.
Usage:
>>> # Calling the method: >>> selected_row = self.get_selected_row(rows)
- get_selenium_column_element(xpath)
[Internal]
Tries to get the selenium element out of a grid column. Workaround method to be used instead of a lambda function on fill_grid method.
- Parameters:
xpath (str) – The xpath to the column.
Usage:
>>> # Calling the method: >>> self.get_selenium_column_element(xpath)
- get_single_button()
[Internal]
- get_soup_select(selector)
Get a soup select object.
- Parameters:
selector – Css selector
- Returns:
Return a soup select object
- get_text(string_left, string_right)
- Parameters:
string –
- Returns:
- get_text_position(text='', string_left='', string_right='')
- Parameters:
string_left –
srting_right –
- Returns:
- get_web_value(element)
[Internal]
Gets the current value or text of element.
- Parameters:
element (Selenium object) – The element to get value or text from
- Returns:
The value or text of passed element
- Return type:
Usage:
>>> # Calling the method: >>> current_value = self.get_web_value(selenium_field_element)
- get_x3_dictionaries(fields)
[Internal]
Generates the dictionaries with field comparisons from the x3 file,
Dictionaries:Field to Type, Field to Size, Field to Title.
- Parameters:
fields (List of str) – List of fields that must be located in x3.
- Returns:
The three x3 dictionaries in a Tuple.
- Trype:
Tuple of Dictionary
Usage:
>>> # Calling the method: >>> x3_dictionaries = self.get_x3_dictionaries(field_list)
- grid_dataframe(grid_number=0)
[Internal]
- image_compare(img1, img2)
Returns differences between 2 images in Gray Scale.
- Parameters:
img1 – cv2 object.
img2 – cv2 object
- Returns:
Mean Squared Error (Matching error) between the images.
- img_src_filtered(img_soup)
[Internal] Return an image source filtered.
- input_grid_appender(column, value, grid_number=0, new=False, row=None, check_value=True, duplicate_fields=[], position=0, ignore_case=True)
[Internal]
Adds a value to the input queue of a grid.
- Parameters:
column (str) – The column of the grid that would receive the input.
value (str) – The value that would be inputted.
grid_number (int) – Which grid should be used when there are multiple grids on the same screen. - Default: 0
new (bool) – Boolean value if this is a new line that should be added. - Default: 1
row (int) – Row number that will be filled
Usage:
>>> # Calling the method: >>> self.input_grid_appender("A1_COD", "000001", 0) >>> # --------------------------------------------- >>> # Calling the method for a new line: >>> self.input_grid_appender("", "", 0, True)
- input_value(field, value, ignore_case=True, name_attr=False, position=1, check_value=True, direction=None)
[Internal]
Sets value of an input element. Returns True if succeeded, False if it failed.
- Parameters:
field (str) – The field name or label to receive the value
value (str) – The value to be set on the field
ignore_case (bool) – Boolean if case should be ignored or not. - Default: True
name_attr (bool) – Boolean if search by Name attribute must be forced. - Default: False
check_value – Boolean ignore input check - Default: True
- Returns:
True if succeeded, False if it failed.
- Return type:
Usage:
>>> # Calling the method >>> self.input_value("A1_COD", "000001")
- is_active_element(element)
[Internal]
Return true if an element is active status
- Parameters:
element (Selenium object) – Element to analyse
- Returns:
A list containing a BeautifulSoup object next to the label
- Return type:
List of BeautifulSoup objects
- lenght_grid_lines(grid)
[Internal] Returns the leght of grid.
- log_error(message, new_log_line=True, skip_restart=False)
[Internal]
Finishes execution of test case with an error and creates the log information for that test.
- Parameters:
Usage:
>>> #Calling the method: >>> self.log_error("Element was not found")
- log_result(field, user_value, captured_value)
[Internal]
Logs the result of comparison between user value and captured value.
- Parameters:
Usage:
>>> # Calling the method: >>> self.log_result("A1_COD", "000001", "000001")
- new_grid_line(field, add_grid_line_counter=True)
[Internal]
Creates a new line on the grid.
- Parameters:
field (List of values) – An item from the grid’s input queue
add_grid_line_counter (bool) – Boolean if counter should be incremented when method is called. - Default: True
Usage:
>>> # Calling the method: >>> self.new_grid_line(["", "", 0, True])
- on_screen_enabled(elements)
[Internal]
Returns a list if selenium displayed and enabled methods is True.
- open_csv(csv_file, delimiter, column, header, filter_column, filter_value)
Returns a dictionary when the file has a header in another way returns a list The folder must be entered in the CSVPath parameter in the config.json. Ex:
Note
This method return data as a string if necessary use some method to convert data like int().
>>> config.json >>> CSVPath : "C:\temp"
- Parameters:
csv_file (str) – .csv file name
delimiter (str) – Delimiter option such like ‘;’ or ‘,’ or ‘|’
column (str) – To files with Header is possible return only a column by header name or Int value for no header files
header (bool) – Indicate with the file contains a Header or not default is Header None
filter_column (str or int) – Is possible to filter a specific value by column and value content, if value is int starts with number 1
filter_value (str) – Value used in pair with filter_column parameter
>>> # Call the method: >>> file_csv = test_helper.OpenCSV(delimiter=";", csv_file="no_header.csv")
>>> file_csv_no_header_column = self.oHelper.OpenCSV(column=0, delimiter=";", csv_file="no_header_column.csv")
>>> file_csv_column = self.oHelper.OpenCSV(column='CAMPO', delimiter=";", csv_file="header_column.csv", header=True)
>>> file_csv_pipe = self.oHelper.OpenCSV(delimiter="|", csv_file="pipe_no_header.csv")
>>> file_csv_header = self.oHelper.OpenCSV(delimiter=";", csv_file="header.csv", header=True)
>>> file_csv_header_column = self.oHelper.OpenCSV(delimiter=";", csv_file="header.csv", header=True)
>>> file_csv_header_pipe = self.oHelper.OpenCSV(delimiter="|", csv_file="pipe_header.csv", header=True)
>>> file_csv_header_filter = self.oHelper.OpenCSV(delimiter=";", csv_file="header.csv", header=True, filter_column='CAMPO', filter_value='A00_FILIAL')
>>> file_csv _no_header_filter = self.oHelper.OpenCSV(delimiter=";", csv_file="no_header.csv", filter_column=0, filter_value='A00_FILIAL')
- open_url_coverage(url='', initial_program='', environment='')
[Internal] Open a webapp url with line parameters :param url: server url. :type url: str :param initial_program: program name. :type initial_program: str :param environment: environment server. :type environment: str Usage: >>> # Call the method: >>> self.open_url_coverage(url=self.config.url, initial_program=initial_program, environment=self.config.environment)
- parameter_screen(restore_backup)
[Internal]
Internal method of SetParameters and RestoreParameters.
- Parameters:
restore_backup (bool) – Boolean if method should restore the parameters.
Usage:
>>> # Calling the method: >>> self.parameter_screen(restore_backup=False)
- parameter_url(restore_backup=False)
[Internal]
Internal method of set and restore parameters.
- Parameters:
restore_backup (bool) – Boolean if method should restore the parameters.
Usage:
>>> # Calling the method: >>> self.parameter_url(restore_backup=False)
- parameter_url_value(language, values={'en-us': '', 'es-es': '', 'pt-br': ''})
[Internal]
Internal method of AddParameters to filter the values.
- Parameters:
Usage:
>>> # Calling the method: >>> self.parameter_url_value(language = self.config.language.lower(), values = {'pt-br': portuguese_value })
- pop_dict_itens(dict_, element_id)
[Internal]
- procedure_screen(is_procedure_install)
[Internal]
Internal method of SetProcedures.
Usage:
>>> # Calling the method: >>> self.parameter_screen(restore_backup=False)
- program_screen(initial_program='', environment='', coverage=False, poui=False)
[Internal]
Fills the first screen of Protheus with the first program to run and the environment to connect.
- Parameters:
Usage:
>>> # Calling the method >>> self.program_screen("SIGAADV", "MYENVIRONMENT")
- reload_user_screen()
[Internal]
Refresh the page - retry load user_screen
- remove_mask(string, valtype=None, element=None)
[Internal]
Removes special characters from received string.
- Parameters:
string (str) – The string that would have its characters removed.
- Returns:
The string with its special characters removed.
- Return type:
Usage:
>>> # Calling the method: >>> value_without_mask = self.remove_mask("111-111.111") >>> # value_without_mask == "111111111"
- report_comparison(base_file='', current_file='')
Compare two reports files and if exists show the difference between then if exists.
Warning
Important to use BaseLine_Spool key in config.json to work appropriately. Baseline_Spool is the path of report spool in yout environment
Warning
Some words are changed to this pattern below:
‘Emissão: 01-01-2015’ ‘Emision: 01-01-2015’ ‘DT.Ref.: 01-01-2015’ ‘Fc.Ref.: 01-01-2015’ ‘Hora…: 00:00:00’ ‘Hora Término: 00:00:00’ ‘/’ to ‘@’
Only .xml
‘encoding=””’ ‘“DateTime”>2015-01-01T00:00:00’ ‘ss:Width=”100”’
- Parameters:
base_file – Base file that reflects the expected. If doesn’t exist make a copy of auto and then rename to base
current_file – Current file recently impressed, this file is use to generate file_auto automatically.
>>> # File example: >>> # acda080rbase.##r >>> # acda080rauto.##r >>> # Calling the method: >>> self.oHelper.ReportComparison(base_file="acda080rbase.##r", current_file="acda080rauto.##r") :return:
- restart()
[Internal]
Restarts the Protheus Webapp and fills the initial screens.
Usage:
>>> # Calling the method: >>> self.restart()
- restart_browser()
[Internal]
- result_checkbox(field, value)
[Internal]
Checks expected value of a Checkbox element.
- Parameters:
- Returns:
Boolean if expected value was found on the element or not.
- Return type:
Usage:
>>> # Calling the method: >>> assertion_value = self.result_checkbox("CheckBox1", True)
- return_data(df, has_header, column)
[Internal]
- return_grid_by_index(column_name)
[Internal]
- return_header_index(column_name=None, headers=None)
[Internal]
- return_soup_by_selenium(elements, term, selectors)
- Parameters:
elements –
term –
- Returns:
- returns_printable_string(string)
Returns a string only is printable characters [Internal] :param string: string value :type string: str
- scroll_grid_check_elements_change(xpath)
[Internal] Used to check PG_DOWN correct execute.
- scroll_to_container(container, term)
- Parameters:
container –
term –
- Returns:
- search_browse_column(search_column, search_elements, index=False)
[Internal]
Chooses the search key to be used during the search.
- Parameters:
Usage:
>>> #Preparing the tuple: >>> search_elements = self.get_search_browse_elements("Products") >>> # Calling the method: >>> self.search_browse_key("Filial*", search_elements)
- search_browse_key(search_key, search_elements, index=False)
[Internal]
Chooses the search key to be used during the search.
- Parameters:
Usage:
>>> #Preparing the tuple: >>> search_elements = self.get_search_browse_elements("Products") >>> # Calling the method: >>> self.search_browse_key("Branch+Id", search_elements)
- search_browse_key_input_value(browse_input)
[Internal]
Get the search browse input value
- search_element_position(field, position=1, input_field=True, direction=None)
[Internal] Usage: >>> # Calling the method >>> self.search_element_position(field)
- search_for_errors(check_help=True)
[Internal] Searches for errors and alerts in the screen. Usage: >>> # Calling the method: >>> self.search_for_errors()
- search_grid_by_text(grid, text, column_index)
[Internal] Searches for text in grid columns Returns the div containing the text
[Internal] Searches for navigation buttons into bs4 object.
- Returns:
selenium object or None
- Return type:
navigation selenium object
Usage: >>> # Calling the method: >>> self.search_navigation_bar(container)
- search_text(selector, text)
[Internal] Return a element based on text and selector.
Usage:
>>> #Calling the method >>> element = self.search_text(selector, text)
- selected_cell(element)
[Internal]
- selected_row(grid_number=0)
[Internal]
Returns the selected row in the grid.
- Parameters:
grid_number (int) – Which grid should be used when there are multiple grids on the same screen. - Default: 1
Usage:
>>> # Calling the method to return the selected row: >>> oHelper.selected_row(grid_number = 0)
- selenium_web_scrap(term, container, optional_term, second_term=None)
[Internal] Return selenium web element
- send_action(action=None, element=None, value=None, right_click=False, click_type=None, wait_change=True)
Sends an action to element and compare it object state change.
- Parameters:
action – selenium function as a reference like click, actionchains or send_keys.
element – selenium element as a reference
value – send keys value
right_click – True if you want a right click
click_type (int) – ClickType enum. 1-3 types- Default: None
- Returns:
True if there was a change in the object
- service_process_bat_file()
[Internal] This method creates a batfile in the root path to kill the process and its children.
- set_grid_focus(grid_number=0)
[Internal]
- set_log_info()
[Internal] Fills the log information needed by opening the About page.
Usage:
>>> # Calling the method: >>> self.set_log_info()
- set_log_info_config()
[Internal]
- set_program(program)
[Internal]
Method that sets the program in the initial menu search field.
- Parameters:
program (str) – The program name
Usage:
>>> # Calling the method: >>> self.set_program("MATA020")
- set_schedule(schedule_status)
Access de Schedule settings and Start run all itens
- slm_click_last_item(sub_menu_child_label)
[Internal]
SetLateralMenu, this method retry click in the last sub item
- standard_search_field(term, name_attr=False, send_key=False)
[Internal]
Do the standard query(F3) this method 1.Search the field 2.Search icon “lookup” 3.Click()
- Parameters:
Usage:
>>> # To search using a label name: >>> self.standard_search_field(name_label) >>> #------------------------------------------------------------------------ >>> # To search using the name of input: >>> self.standard_search_field(field='A1_EST',name_attr=True) >>> #------------------------------------------------------------------------ >>> # To search using the name of input and do action with a key: >>> oHelper.F3(field='A1_EST',name_attr=True,send_key=True)
- sub_string(line, file_extension)
- Parameters:
line –
file_extension –
- Returns:
- supported_keys(key='')
[Internal]
- switch_to_active_element()
[Internal] Call switch_to_active_element method
- Returns:
- treenode(tree_number=0)
- Returns:
treenode bs4 object
- treenode_selected(label_filtered, tree_number=0)
[Internal] Returns a tree node selected by label
- try_click(element)
[Internal]
- try_element_to_be_clickable(element)
Try excpected condition element_to_be_clickable by XPATH or ID
- try_recover_lost_line(field, grid_id, row, headers, field_to_label)
[Internal]
Tries to recover the position if a new line is lost.
Workaround method to keep trying to get the right row fill_grid method.
- Parameters:
field (List of values) – An item from the grid’s input queue
grid_id (str) – The grid’s ID
row (Beautiful Soup object) – The current row
headers (List of Dictionaries) – List of dictionaries with each grid’s headers
field_to_label (Dict) – Dictionary from the x3 containing the field to label relationship.
Usage:
>>> # Calling the method: >>> self.try_recover_lost_line(field, grid_id, row, headers, field_to_label)
- try_send_keys(element_function, key, try_counter=1)
[Internal]
Tries to send value to element using different techniques. Meant to be used inside of a loop.
- Parameters:
Usage:
>>> # Calling the method: >>> self.try_send_keys(selenium_input, user_value, try_counter)
- update_password()
[Internal] Update the password in the Protheus password change request screen
- user_screen(admin_user=False)
[Internal]
Fills the user login screen of Protheus with the user and password located on config.json.
Usage:
>>> # Calling the method >>> self.user_screen()
- user_screen_tss()
[Internal]
Fills the user login screen of Protheus with the user and password located on config.json.
Usage:
>>> # Calling the method >>> self.user_screen()
- wait_blocker()
[Internal]
Wait blocker disappear
- wait_element(term, scrap_type=ScrapType.TEXT, presence=True, position=0, optional_term=None, main_container='.tmodaldialog,.ui-dialog,wa-dialog', check_error=True, twebview=False, second_term=None)
[Internal]
Waits until the desired element is located on the screen.
- Parameters:
term (str) – The first search term. A text or a selector.
scrap_type (enum.ScrapType.) – The type of webscraping. - Default: enum.ScrapType.TEXT
presence (bool) – If the element should exist or not in the screen. - Default: False
position (int) – If the element should exist at a specific position. e.g. The fourth button. - Default: 0
optional_term (str) – The second search term. A selector used in MIXED webscraping. - Default: None
main_container (str) – The selector of a container element that has all other elements. - Default: None
Usage:
>>> # Calling the method: >>> self.wait_element(term=".ui-button.ui-dialog-titlebar-close[title='Close']", scrap_type=enum.ScrapType.CSS_SELECTOR)
- wait_element_is_blocked(parent_id)
- Parameters:
parent_id –
- Returns:
- wait_element_is_focused(element_selenium=None, time_out=5, step=0.1)
[ Internal ] Wait element Lose focus
- wait_element_is_not_displayed(element_soup, timeout=5, step=0.3)
[Internal]
Wait element.is_displayed() return false :param element_soup: The element soup. :type element_soup: BeautifulSoup object. :param timeout: The maximum amount of time of wait. - Default: 5.0 :type timeout: float :param step: The amount of time each step should wait. - Default: 0.1 :type step: float
Usage:
>>> # Calling the method: >>> self.wait_element_is_not_displayed(soup_element, 10, 0.5)
- wait_element_is_not_focused(element_selenium=None, time_out=5, step=0.1)
[ Internal ] Wait element Lose focus
- wait_element_timeout(term, scrap_type=ScrapType.TEXT, timeout=5.0, step=0.1, presence=True, position=0, optional_term=None, main_container='.tmodaldialog,.ui-dialog, wa-dialog, body', check_error=True, twebview=False)
[Internal]
Waits until the desired element is located on the screen or until the timeout is met.
- Parameters:
term (str) – The first search term. A text or a selector.
scrap_type (enum.ScrapType.) – The type of webscraping. - Default: enum.ScrapType.TEXT
timeout (float) – The maximum amount of time of wait. - Default: 5.0
timeout – The amount of time each step should wait. - Default: 0.1
presence (bool) – If the element should exist or not in the screen. - Default: False
position (int) – If the element should exist at a specific position. e.g. The fourth button. - Default: 0
optional_term (str) – The second search term. A selector used in MIXED webscraping. - Default: None
main_container (str) – The selector of a container element that has all other elements. - Default: None
Usage:
>>> # Calling the method: >>> self.wait_element_timeout(term=button, scrap_type=enum.ScrapType.MIXED, optional_term="button", timeout=10, step=0.1)
- wait_gridTree(n_lines, timeout=None)
[Internal] Wait until the GridTree line count increases or decreases.
- wait_selected_row(grid_number=0, column_index=0, text='default-text', time_out=5)
[Internal]
This method expects the selected line to be the line with the text value entered.
- Parameters:
Usage:
>>> # Calling the method to wait the selected row: >>> oHelper.wait_selected_row(grid_number = 0, column_index = 0, text= "value" )
- wait_smart_erp_environment()
[Internal]
- wait_until_to(expected_condition='element_to_be_clickable', element=None, locator=None, timeout=False)
[Internal]
This method is responsible for encapsulating “wait.until”.
- web_scrap(term, scrap_type=ScrapType.TEXT, optional_term=None, label=False, main_container=None, check_error=True, check_help=True, input_field=True, direction=None, position=1, twebview=False, second_term=None)
[Internal]
Returns a BeautifulSoup or selenium object list based on the search parameters.
Does not support ScrapType.XPATH as scrap_type parameter value.
- Parameters:
term (str) – The first search term. A text or a selector
scrap_type (enum.ScrapType.) – The type of webscraping. - Default: enum.ScrapType.TEXT
optional_term (str) – The second search term. A selector used in MIXED webscraping. - Default: None
label (bool) – If the search is based on a label near the element. - Default: False
main_container (str) – The selector of a container element that has all other elements. - Default: None
position (int) – Position which element is located. - Default: 1
- Returns:
List of BeautifulSoup4 or Selenium elements based on search parameters.
- Return type:
List of BeautifulSoup4 or Selenium objects
Usage:
>>> #All buttons >>> buttons = self.web_scrap(term="button", scrap_type=enum.ScrapType.CSS_SELECTOR) >>> #----------------# >>> #Elements that contain the text "Example" >>> example_elements = self.web_scrap(term="Example") >>> #----------------# >>> #Elements with class "my_class" and text "my_text" >>> elements = self.web_scrap(term="my_text", scrap_type=ScrapType.MIXED, optional_term=".my_class")