def dropdown_select(self, select_text: str, locator: Locator, dynamic_value=None): if locator is not None: self.click(locator, dynamic_value) if self.target == MobileDevice.iOS: self.input( Locator( name='PICKER WHEEL SELECT', by=By.XPATH, value= '//XCUIElementTypePicker[@name="ios_picker"]/XCUIElementTypePickerWheel', dynamic=False, description='PICKER WHEEL SELECT', check_opening_page=False), select_text) self.click( Locator(name='PICKER WHEEL DONE', by=By.XPATH, value='//XCUIElementTypeOther[@name="done_button"]', dynamic=False, description='PICKER WHEEL DONE', check_opening_page=False)) else: self.click( Locator(name='ANDROID_SELECT', by=By.XPATH, value='//android.widget.CheckedTextView[@text="%s"]', dynamic=True, description='ANDROID_SELECT', check_opening_page=False), select_text) return True
def wait(self, locator: Locator, dynamic_value=None, hard_assert=True): t_start = datetime.datetime.now() t_end = t_start + datetime.timedelta(seconds=self.wait_current) while True: if datetime.datetime.now() >= t_end: break try: if self.driver.find_element( locator.by, locator.value(dynamic_value)).is_displayed(): return True if self.is_web_platform(): self.driver.execute_script( "arguments[0].scrollIntoView();", self.driver.find_element(locator.by, locator.value(dynamic_value))) except NoSuchElementException: continue except TimeoutException: continue if hard_assert: msg = '[Data: %s] [Method: %s] [Status: %s] + [Hard Assert]' % ( self, 'wait', 'Fail') echo(msg, color=ECHO_COLORS.FAIL) error_message(msg, self) assert False, msg return False
def scroll(self, locator1: Locator, locator2: Locator, dynamic_value1=None, dynamic_value2=None): if self.is_mobile_platform(): element1 = self.driver.find_element(locator1.by, locator1.value(dynamic_value1)) element2 = self.driver.find_element(locator2.by, locator2.value(dynamic_value2)) action = TouchAction(self.driver) action.press(element1).move_to(element2).release().perform() return True return False
def _generate_locator(self, locator): return Locator(locator['locatorName'], get_by(locator[self.platform_name]['locatorBy']), locator[self.platform_name]['locatorValue'], locator[self.platform_name]['locatorDynamic'], locator['locatorDescription'], self._get_locator_check_parameter(locator))
def clear(self, locator: Locator, dynamic_value=None): if self.wait(locator, dynamic_value): element = self.driver.find_element(locator.by, locator.value(dynamic_value)) if self.is_mobile_platform(): element.clear() else: element.send_keys(''.join( map(str, ['\b' for i in self.get_text(locator, dynamic_value)]))) return True return False
def is_exists(self, locator: Locator, dynamic_value=None): t_start = datetime.datetime.now() t_end = t_start + datetime.timedelta(seconds=self.wait_current) while True: if datetime.datetime.now() >= t_end: break try: if self.driver.find_element( locator.by, locator.value(dynamic_value)).is_displayed(): return True except NoSuchElementException: continue return False
def exists(self, locator: Locator, dynamic_value=None): try: return self.driver.find_element( locator.by, locator.value(dynamic_value)).is_displayed() except NoSuchElementException: return False
def input(self, locator: Locator, text, dynamic_value=None): if self.wait(locator, dynamic_value): self.driver.find_element( locator.by, locator.value(dynamic_value)).send_keys(text) return True return False
def click(self, locator: Locator, dynamic_value=None): if self.wait(locator, dynamic_value): self.driver.find_element(locator.by, locator.value(dynamic_value)).click() return True return False
def not_exists(self, locator: Locator, dynamic_value=None): try: self.driver.find_element(locator.by, locator.value(dynamic_value)) return False except NoSuchElementException: return True
def get_text(self, locator: Locator, dynamic_value=None): if self.wait(locator, dynamic_value): return self.driver.find_element(locator.by, locator.value(dynamic_value)).text
from locators.locator import Locator from selenium.webdriver.common.by import By # FOR TAKE PHOTO # ANDROID ANDROID_SELECT_TAKE_PHOTO = Locator( name='ANDROID SELECT TAKE PHOTO TEXT', by=By.XPATH, value='//android.widget.TextView[@text="Take Photo…"]', dynamic=False, description='ANDROID SELECT TAKE PHOTO TEXT', check_opening_page=False) ANDROID_TAKE_PHOTO_1 = Locator(name='ANDROID TAKE PHOTO 1', by=By.XPATH, value='(//GLButton[@content-desc="NONE"])[2]', dynamic=False, description='ANDROID TAKE PHOTO 1', check_opening_page=False) ANDROID_TAKE_PHOTO_2 = Locator( name='ANDROID TAKE PHOTO 2', by=By.XPATH, value='//android.widget.ImageView[@content-desc="Shutter"]', dynamic=False, description='ANDROID TAKE PHOTO 2', check_opening_page=False) ANDROID_TAKE_PHOTO_3 = Locator( name='ANDROID TAKE PHOTO 3', by=By.XPATH, value='//android.view.View[@content-desc="Shutter button"]', dynamic=False, description='ANDROID TAKE PHOTO 3',
def get_text(self, locator: Locator, dynamic_value=None): if self.wait(locator, dynamic_value): element = self.driver.find_element(locator.by, locator.value(dynamic_value)) return element.text if element.text != '' else element.get_attribute( "value")