예제 #1
0
 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)
예제 #2
0
 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 ''
예제 #3
0
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
예제 #4
0
 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)
예제 #5
0
 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)
예제 #6
0
 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
예제 #7
0
 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
예제 #8
0
 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)
예제 #9
0
 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)
예제 #10
0
 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)
예제 #11
0
 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 []
예제 #12
0
 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
예제 #13
0
 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
예제 #14
0
 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)
예제 #15
0
    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 ''
예제 #16
0
 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)        
예제 #17
0
 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
예제 #18
0
 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 ''
예제 #19
0
    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)    
예제 #20
0
 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
예제 #21
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)
예제 #22
0
 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 ''
예제 #23
0
 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)
예제 #24
0
 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 ''
예제 #25
0
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())
예제 #26
0
def maxmize(driver):
    prt(3, 'Maxmize Browser')
    driver.maximize_window()
예제 #27
0
def delete_all_cookies(driver):
    prt(3, 'Delete All Cookies')
    driver.delete_all_cookies()
예제 #28
0
def refresh(driver):
    prt(3, 'Refresh Current Page')
    driver.refresh()
예제 #29
0
def get_current_url(driver):
    prt(2, 'Get Current URL')
    return driver.current_url()
예제 #30
0
def get_page_source(driver):
    prt(3, 'Get Page Source')
    return driver.page_source