def click(self, driver, elementsClickByIndex_indexNumber = None): if elementsClickByIndex_indexNumber == None: '''Click a Web Element''' if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver) WebDriverWait(driver,settings.T_SHORT).until(lambda x: x.find_element(by=self.sID, value=self.sIDV).is_displayed()) driver.find_element(by=self.sID, value=self.sIDV).click() time.sleep(settings.T_SHORT) prt(3, 'Click %s Button' % self.sNN) else: prt(3, 'Element %s is NOT found!' % self.sNN) else: '''Click A Element from Lots of Matching Elements by IndexNumber''' if self._if_exist(driver): # Check Existence try: if settings.DEMO: self._highlight(driver, elementsClickByIndex_indexNumber - 1) driver.find_elements(by=self.sID, value=self.sIDV)[elementsClickByIndex_indexNumber - 1].click() prt(3, 'Click the %s Element from "%s"' % (formatedStrNumber(elementsClickByIndex_indexNumber), self.sNN)) time.sleep(settings.T_SHORT) except Exception as e: prt(3, str(e)) else: prt(3, 'Element %s is NOT found!' % self.sNN)
def get_elements(self, driver): if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver) return driver.find_elements(by=self.sID,value=self.sIDV) else: prt(3, 'Element %s is NOT found!' % self.sNN) return ''
def start_browser( URL, brower_driver_location=settings.DRIVER_PATH_CHROME, browserType='chrome', ): prt(0, 'Stated to Open Browser %s' % browserType.upper()) if browserType.upper() == 'FIREFOX': driver = webdriver.Firefox() elif browserType.upper() == 'CHROME': chrome_options = webdriver.ChromeOptions() chrome_options.binary_location = brower_driver_location if not os.path.exists(_tmp_folder): os.makedirs(_tmp_folder) if not os.path.exists(_tmp_folder + '/user-data'): os.makedirs(_tmp_folder + '/user-data') if not os.path.exists(_tmp_folder + '/data-path'): os.makedirs(_tmp_folder + '/data-path') if not os.path.exists(_tmp_folder + '/cache-dir'): os.makedirs(_tmp_folder + '/cache-dir') if 'Darwin' in platform(): driver = webdriver.Chrome(brower_driver_location) elif 'Linux' in platform(): # Designed for headless like aws lambda chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--window-size=1280x1696') chrome_options.add_argument( '--user-data-dir={}'.format(_tmp_folder + '/user-data')) chrome_options.add_argument('--hide-scrollbars') chrome_options.add_argument('--enable-logging') chrome_options.add_argument('--log-level=0') chrome_options.add_argument('--v=99') chrome_options.add_argument('--single-process') chrome_options.add_argument('--data-path={}'.format(_tmp_folder + '/data-path')) chrome_options.add_argument('--ignore-certificate-errors') chrome_options.add_argument('--homedir={}'.format(_tmp_folder)) chrome_options.add_argument( '--disk-cache-dir={}'.format(_tmp_folder + '/cache-dir')) chrome_options.add_argument( 'user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36' ) driver = webdriver.Chrome(chrome_options=chrome_options) else: raise Exception('which environment is it?') else: raise RuntimeError('Browser Type is not correct!') driver.implicitly_wait(30) if URL != "": driver.get(URL) time.sleep(settings.T_MINI) return driver
def submit(self, driver): ''' Submit a Web Form''' if self._if_exist(driver) == True: # Check Existence if settings.DEMO: self._highlight(driver) driver.find_element(by=self.sID, value=self.sIDV).submit() prt(3, 'Click %s Button' % self.sNN) else: prt(3, 'Element %s is NOT found!' % self.sNN)
def db_click(self, driver): '''Double Click a Web Element''' if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver) driver.find_element(by=self.sID, value=self.sIDV).double_click() prt(3, 'Double Click %s Button' % self.sNN) else: prt(3, 'Element %s is NOT found!' % self.sNN)
def is_visible(self, driver): '''Click if a Web Element is visible''' if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver) prt(3, 'Check if Element %s is visible' % self.sNN) return driver.find_element(by=self.sID, value=self.sIDV).is_displayed() else: prt(3, 'Element %s is NOT found!' % self.sNN) return False
def is_checked(self, driver): '''Check if the Checkbox is checked''' if self._if_exist(driver) == True: # Check Existence if settings.DEMO: self._highlight(driver) prt(3, 'Check if Element %s is checked' % self.sNN) return driver.find_element(by=self.sID, value=self.sIDV).is_selected() else: prt(3, 'Element %s is NOT found!' % self.sNN) return False
def select_by_text(self, driver, text): '''Select an Item from List by Text''' if self._if_exist(driver) == True: # Check Existence if settings.DEMO: self._highlight(driver) selectObj = Select(driver.find_element(by=self.sID, value=self.sIDV)) selectObj.select_by_visible_text(text) prt(3, 'Select %s to by visible text: %s' % (self.sNN, text)) else: prt(3, 'Element %s is NOT found!' % self.sNN)
def get_pic_url(self, driver): if self._if_exist(driver) == True: # Check Existence prt(3, "Get URL of Picture: %s" % self.sNN) try: if settings.DEMO: self._highlight(driver) selectObj = driver.find_element(by=self.sID, value=self.sIDV).get_attribute('src') return selectObj except: return '' else: prt(3, 'Element %s is NOT found!' % self.sNN)
def uncheck(self, driver): '''Set "OFF" to a Checkbox''' if self._if_exist(driver) == True: # Check Existence if settings.DEMO: self._highlight(driver) if driver.find_element(by=self.sID, value=self.sIDV).is_selected() == True: driver.find_element(by=self.sID, value=self.sIDV).click() else: pass prt(3, 'Set Checkbox %s to "OFF" (unchecked)' % self.sNN) else: prt(3, 'Element %s is NOT found!' % self.sNN)
def get_all_options(self, driver): '''Get all options from a List, return value is a Python List''' if self._if_exist(driver) == True: # Check Existence prt(3, "Get Selector %s's Current Selected Option" % self.sNN) selectObj = Select(driver.find_element(by=self.sID, value=self.sIDV)) if settings.DEMO: self._highlight(driver) return selectObj.options() else: prt(3, 'Element %s is NOT found!' % self.sNN) return []
def send_ESC_key(self, driver): if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver) prt(3, 'Send Keys to: %s' % (self.sNN)) elemToSend = driver.find_element(by=self.sID, value=self.sIDV) key = ActionChains(driver).send_keys_to_element(elemToSend, u'\ue00c') key.perform() else: prt(3, 'Element %s is NOT found!' % self.sNN) return False
def mouse_over(self, driver): if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver) prt(3, 'Mouse over on: %s' % (self.sNN)) elemToHover = driver.find_element(by=self.sID, value=self.sIDV) hover = ActionChains(driver).move_to_element(elemToHover) hover.perform() else: prt(3, 'Element %s is NOT found!' % self.sNN) return False
def select_by_index(self, driver, indexNumber): '''Select an Item from List by Index Number''' if self._if_exist(driver) == True: # Check Existence if settings.DEMO: self._highlight(driver) selectObj = Select(driver.find_element(by=self.sID, value=self.sIDV)) selectorSize = selectObj.size() if indexNumber > selectorSize: pass else: selectObj.select_by_index(self, indexNumber) prt(3, 'Select %s to by index number: %d' % self.sNN, indexNumber) else: prt(3, 'Element %s is NOT found!' % self.sNN)
def get_values(self, driver, attribute): '''Get the Text Value From a Web Element''' if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver) ret = [] for elem in driver.find_elements(by=self.sID,value=self.sIDV): ret.append(elem.get_attribute(attribute)) prt(3, "Get All Value from: %s" % (self.sNN)) return ret else: prt(3, 'Element %s is NOT found!' % self.sNN) return ''
def check_all(self,driver): '''Set "ON" to a Checkbox''' if self._if_exist(driver) == True: # Check Existence if settings.DEMO: self._highlight(driver) matchItems = driver.find_elements(by=self.sID, value=self.sIDV) if len(matchItems) > 0: for item in matchItems: if item.is_selected() == True: pass else: item.click() prt(3, 'Set Checkbox %s to "ON" (checked)' % self.sNN) else: prt(3, 'Element %s is NOT found!' % self.sNN)
def wait_until_text_present(self, driver, textWait, waitTime=settings.T_LONG): if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver) prt(3, 'Wait for Text "%s" to be Present in %s' % (textWait, self.sNN)) for i in range(waitTime): if self._get_text(driver).find(textWait) >= 0: return True else: time.sleep(1) return False else: prt(3, 'Element %s is NOT found!' % self.sNN) return False
def get_texts(self, driver): ''' Note: This is only used for elemets not for single element ''' if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver) prt(3, 'Get All Texts From %s' % self.sNN) ret = [] for element in driver.find_elements(self.sID, value=self.sIDV): ret.append(element.text) return ret else: prt(3, 'Element %s is NOT found!' % self.sNN) return ''
def set_txt(self, driver, text): ''' Set Text to a Editbox ''' if self._if_exist(driver) == True: # Check Existence if settings.DEMO: self._highlight(driver) driver.find_element(by=self.sID, value=self.sIDV).clear() driver.find_element(by=self.sID, value=self.sIDV).send_keys(text) # if self.sID == 'id': # driver.find_element_by_id(self.sIDV).clear() # driver.find_element_by_id(self.sIDV).send_keys(text) # elif self.sID == 'name': # driver.find_element_by_name(self.sIDV).clear() # driver.find_element_by_name(self.sIDV).send_keys(text) prt(3, 'Set %s as: %s' % (self.sNN, text)) else: prt(3, 'Element %s is NOT found!' % self.sNN)
def if_exist(self, driver, elementsExistByText_textValue = None, waitTime = settings.T_LONG): ''' Check the Existence of a Web Element / Lots of Matching Web Elements''' if elementsExistByText_textValue == None: '''Check the Existence of a Web Element''' try: WebDriverWait(driver,waitTime).until(lambda x: x.find_element(by=self.sID, value=self.sIDV)) if settings.DEMO: self._highlight(driver) prt(3, 'Check Existence of %s: Existed!' % self.sNN) return True except: prt(3, 'Check Existence of %s: NOT Existed!' % self.sNN) return False else: '''Find if an Element is Existed in Lots of Matching Elemets''' prt(3, 'Check Existence of Text Value "%s" in Elemets "%s"' % (elementsExistByText_textValue, self.sNN)) if self._if_exist(driver): # Check Existence index = 1 # initiate looping value for locator in driver.find_elements(self.sID, value=self.sIDV): if locator.text == elementsExistByText_textValue: if settings.DEMO: self._highlight(driver, index - 1) return index else: index += 1 return 0 else: return 0
def close_browser(driver): prt(0, 'Close Browser, Test End') # Close webdriver connection driver.quit() # Remove specific tmp dir of this "run" try: shutil.rmtree(_tmp_folder) except: # silent pass pass # Remove possible core dumps folder = '/tmp' for the_file in os.listdir(folder): file_path = os.path.join(folder, the_file) try: if 'core.headless-chromi' in file_path and os.path.exists( file_path) and os.path.isfile(file_path): os.unlink(file_path) except Exception as e: print(e)
def get_value(self, driver, attribute, elementsGetTextByIndex_IndexNumber = None): if not elementsGetTextByIndex_IndexNumber: '''Get the Text Value From a Web Element''' if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver) prt(3, "Get Text's %s from Element: %s" % (attribute, self.sNN)) return driver.find_element(by=self.sID, value=self.sIDV).get_attribute(attribute) else: prt(3, 'Element %s is NOT found!' % self.sNN) return '' else: '''Get the Text Value FromFrom Matching Elements''' if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver, elementsGetTextByIndex_IndexNumber - 1) prt(3, "Get the %s Text's %s from: %s" % (formatedStrNumber(elementsGetTextByIndex_IndexNumber), attribute, self.sNN)) return driver.find_element(by=self.sID, value=self.sIDV)[elementsGetTextByIndex_IndexNumber + 1].get_attribute(attribute) else: prt(3, 'Element %s is NOT found!' % self.sNN) return ''
def get_current_selection(self, driver): '''Get Current Selection from a List''' if self._if_exist(driver) == True: # Check Existence try: selectObj = Select(driver.find_element(by=self.sID, value=self.sIDV)) prt(3, "Get Selector %s's Current Selected Option" % self.sNN) if settings.DEMO: self._highlight(driver) return selectObj.first_selected_option().getText() except: prt(3, "Get Selector %s's Current Selected Option, But No Item Seleted" % self.sNN) return '' else: prt(3, 'Element %s is NOT found!' % self.sNN)
def get_text(self, driver, elementsGetTextByIndex_IndexNumber = None): import datetime if not elementsGetTextByIndex_IndexNumber: '''Get the Text Value From a Web Element''' if self._if_exist(driver) == True: # Check Existence if settings.DEMO: self._highlight(driver) prt(3, 'Get Text Value from Element: %s @ %s' % (self.sNN, datetime.datetime.now().strftime("%m-%d %H:%M:%S.%f"))) return driver.find_element(by=self.sID, value=self.sIDV).text else: prt(3, 'Element %s is NOT found!' % self.sNN) return '' else: '''Get the Text Value FromFrom Matching Elements''' if self._if_exist(driver): # Check Existence if settings.DEMO: self._highlight(driver, elementsGetTextByIndex_IndexNumber - 1) prt(3, 'Get the %s Text Value from: %s' % (formatedStrNumber(elementsGetTextByIndex_IndexNumber), self.sNN)) return driver.find_elements(self.sID, value=self.sIDV)[elementsGetTextByIndex_IndexNumber + 1].text else: prt(3, 'Element %s is NOT found!' % self.sNN) return ''
from selenium_framework.common import prt, getFormatedCurrentTime from AUT.RedPulse.test_cases import SmokeTest, MultiUserInteractionDemo prt(0, 'Testing Starts on %s' % getFormatedCurrentTime()) url = 'https://www.redpulse.com/' # Testing Start ---------------------------------- # SmokeTest(url) MultiUserInteractionDemo(url) # Testing End ------------------------------------ prt(0, 'Testing Finished on %s' % getFormatedCurrentTime())
def maxmize(driver): prt(3, 'Maxmize Browser') driver.maximize_window()
def delete_all_cookies(driver): prt(3, 'Delete All Cookies') driver.delete_all_cookies()
def refresh(driver): prt(3, 'Refresh Current Page') driver.refresh()
def get_current_url(driver): prt(2, 'Get Current URL') return driver.current_url()
def get_page_source(driver): prt(3, 'Get Page Source') return driver.page_source