Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.common.by import By
from toolium.driver_wrapper import DriverWrappersPool
from toolium.pageobjects.common_object import CommonObject
from toolium.visual_test import VisualTest
class PageElement(CommonObject):
"""Class to represent a web or a mobile page element
:type locator: (selenium.webdriver.common.by.By or appium.webdriver.common.mobileby.MobileBy, str)
:type parent: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement
or toolium.pageelements.PageElement
or (selenium.webdriver.common.by.By or appium.webdriver.common.mobileby.MobileBy, str)
"""
def __init__(self, by, value, parent=None, order=None, wait=False, shadowroot=None):
"""Initialize the PageElement object with the given locator components.
If parent is not None, find_element will be performed over it, instead of
using the driver's method, so it can find nested elements.
:param by: locator type
:param value: locator value
def _get_page_elements(self):
"""Return page elements and page objects of this page object
:returns: list of page elements and page objects
"""
page_elements = []
for attribute, value in list(self.__dict__.items()) + list(self.__class__.__dict__.items()):
if attribute != 'parent' and isinstance(value, CommonObject):
page_elements.append(value)
return page_elements
from typing import List, Any
from toolium.driver_wrapper import DriverWrappersPool
from toolium.pageelements.button_page_element import Button
from toolium.pageelements.checkbox_page_element import Checkbox
from toolium.pageelements.group_page_element import Group
from toolium.pageelements.input_radio_page_element import InputRadio
from toolium.pageelements.input_text_page_element import InputText
from toolium.pageelements.link_page_element import Link
from toolium.pageelements.page_element import PageElement
from toolium.pageelements.select_page_element import Select
from toolium.pageelements.text_page_element import Text
from toolium.pageobjects.common_object import CommonObject
class PageElements(CommonObject):
"""Class to represent multiple web or mobile page elements
:type locator: (selenium.webdriver.common.by.By or appium.webdriver.common.mobileby.MobileBy, str)
:type parent: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement
or toolium.pageelements.PageElement
or (selenium.webdriver.common.by.By or appium.webdriver.common.mobileby.MobileBy, str)
:type page_element_class: class
"""
page_element_class = PageElement #: class of page elements (PageElement, Button...)
def __init__(self, by, value, parent=None, page_element_class=None, order=None):
"""Initialize the PageElements object with the given locator components.
If parent is not None, find_elements will be performed over it, instead of
using the driver's method, so it can find nested elements.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
from toolium.driver_wrapper import DriverWrappersPool
from toolium.pageobjects.common_object import CommonObject
class PageObject(CommonObject):
"""Class to represent a web page or a mobile application screen
:type app_strings: str
"""
def __init__(self, driver_wrapper=None, wait=False):
"""Initialize page object properties and update their page elements
:param driver_wrapper: driver wrapper instance
:param wait: True if the page object must be loaded in wait_until_loaded method of the container page object
"""
super(PageObject, self).__init__()
self.wait = wait #: True if it must be loaded in wait_until_loaded method of the container page object
self.driver_wrapper = driver_wrapper if driver_wrapper else \
DriverWrappersPool.get_default_wrapper() #: driver wrapper instance
self.init_page_elements()