Esempio n. 1
0
    def __init__(self, driver, url):
        self.driver = driver
        self.driver.get(url)
        log = UserLog()
        self.logging = log.get_log()

        self.getele = Getelement(self.driver)
        self.read = Read_inifile()
        self.getname = Getname()
Esempio n. 2
0
class AppiumBase:

    def __init__(self,platformName=None,platformVersion=None,deviceName=None,udid=None,appPackage=None,appActivity=None):

        if platformName == None:

            platform = 'Android'

        else:

            platform = platformName

        if platformVersion == None:

            version = '10.3.10.0'

        else:
            version = platformVersion

        if deviceName == None:

            device = 'Redmi111'

        else:
            device = deviceName

        if udid == None:

            udi = '56f46ae7'

        else :

            udi = udid

        if appPackage == None:
            Package = 'com.xueqiu.android'
        else:
            Package = appPackage

        if appActivity == None:

            Activity =   'com.xueqiu.android.view.WelcomeActivityAlias'
        else :
            Activity = appActivity


        desired_caps = {}
        desired_caps['platformName'] = platform  # 设备系统
        desired_caps['platformVersion'] = version  # 设备系统版本
        desired_caps['deviceName'] = device  # 设备名称
        desired_caps['udid'] = udi  # 设备名称

        # 设置APP信息,进入启动页

        desired_caps['appPackage'] = Package
        desired_caps['appActivity'] = Activity
        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)

        self.driver.implicitly_wait(3)  # 初始化 webdriver 之后,因式等待3秒

        self.log = UserLog()
        self.logger = self.log.get_log()

        # 初始化读取元素定位信息类
        filename = parent_dir + '/config/AppElement.ini'

        node = 'AppElement'

        self.read_ini = ReadIni(filename=filename,node= node)




    def get_element(self,key):

        # read_ini = ReadIni(filename,node)
        '''封装查找元素'''

        local = self.read_ini.get_value(key)
        try:

            if local != None:
                by = local.split('>')[0]
                local_by = local.split('>')[1]

                if by == 'id':

                    return self.driver.find_element_by_id(local_by)

                elif by == 'classname':

                    return self.driver.find_element_by_class_name(local_by)

                elif by == 'name':

                    return self.driver.find_element_by_name(local_by)

                elif by == 'xpath':

                    return self.driver.find_element_by_xpath(local_by)

                elif by == 'ids':

                    return self.driver.find_elements_by_id(local_by)

                elif by == 'accessibility_id':

                    return self.driver.find_element_by_accessibility_id(local_by)


                elif by == 'xpaths':

                    return self.driver.find_elements_by_xpath(local_by)

                elif by == 'mobile_id':

                    return self.driver.find_element(MobileBy.ID,local_by)

                elif by == 'mobile_ids':

                    return self.driver.find_elements(MobileBy.ID,local_by)

                elif by == 'mobile_xpath':

                    return self.driver.find_element(MobileBy.XPATH,local_by)

                elif by == 'android_uiautomator':

                    # local_by = 'new UiSelector().resourceId("com.xueqiu.android:id/login_account")'
                    # local_by = 'new UiSelector().textContains("账号密码")'
                    # local_by = 'new UiSelector().text("我的")'

                    return self.driver.find_element_by_android_uiautomator(local_by)

                elif by == 'android_uiautomators':

                    return self.driver.find_elements_by_android_uiautomator(local_by)

                else :
                    self.logger.info('没有该定位方式')


        except Exception as e:
            self.logger.info('查找元素出现异常,异常信息为:' + {e})


    def get_clildelement(self,eles:WebDriver,key):

        '''封装从父元素获取子元素'''

        data = self.read_ini.get_value(key)

        by = data.split('>')[0]

        value = data.split('>')[1]

        try:

            if by == 'id':

                ele = eles.find_element_by_id(value)

                return ele

            elif by == 'xpath':

                ele = eles.find_element_by_xpath(value)

                return ele

        except Exception as e:

            self.logger.info('查找元素出现异常,异常信息为:' + {e})


    def get_windown_rect(self):

        windown_rect = self.driver.get_window_rect()

        width = windown_rect['windth']
        height = windown_rect['height']

        return {'width':width,'height':height}



    def action_press_moveto(self):

        '''列表:屏幕操作,按住某位置后,手指移动到另外一个位置,释放手指'''

        action = TouchAction(self.driver)

        x1 = int(self.get_windown_rect()['width']/2)

        y_start = int(self.get_windown_rect()['height'] * 1/5)

        y_end = int(self.get_windown_rect()['height'] * 4/5)

        action.press(x = x1,y = y_start).wait(200).move_to(x = x1,y = y_end).release().perform()


    def action_list_find(self):

        '''列表:滑动列表数据并找到某个元素'''

        self.driver.find_elements_by_android_uiautomator(
            'new UiScrollable(new UiSelector().scrollable(true).instance(0).scrollIntoView(new Uiselector().text("查找的文案")))'
        )
class FindElement:
    def __init__(self, driver: WebDriver, file=None, node=None):
        self.driver = driver
        self.log = UserLog()
        self.logger = self.log.get_log()
        if file == None:
            self.filename = parent_dir + '/config/Element.ini'
        else:
            self.filename = parent_dir + file
        self.rean_ini = ReadIni(filename=self.filename, node=node)
        self.logger.info(self.filename)
        self.logger.info(node)

    def get_element(self, key):
        '''
        获取元素,返回Selenium Element元素
        '''

        data = self.rean_ini.get_value(key)
        self.logger.info(key)
        self.logger.info(data)
        by = data.split('>')[0]
        values = data.split('>')[1:]

        if len(values) == 1:

            value = data.split('>')[1]

        elif len(values) > 1:

            value = values[0]

            for i in range(1, len(values) - 1):

                value = value + '>' + values[i]

        self.logger.info('定位方式' + by + '定位值' + value)
        # self.logger.info(type(value))
        try:
            if by == 'id':

                element = WebDriverWait(
                    self.driver,
                    10).until(lambda x: x.find_element_by_id(value))
                is_disappeared = WebDriverWait(
                    self.driver, 30, 1,
                    (ElementNotVisibleException)).until_not(
                        lambda x: x.find_element_by_id(value).is_displayed())

                # locator = (By.ID,"value")
                # WebDriverWait(self.driver,20,0.5).until(EC.presence_of_all_elements_located(locator))
                # ele = self.driver.find_element_by_id(value)
                return element

            elif by == 'xpath':

                ele = WebDriverWait(
                    self.driver,
                    10).until(lambda x: x.find_element_by_xpath(value))
                # ele = self.driver.find_element_by_xpath(value)
                self.logger.info("获取到的元素为--->")
                self.logger.info(ele)
                return ele

            elif by == 'css':
                # locator = (By.CSS_SELECTOR,"value")
                # WebDriverWait(self.driver,20,0.5).until(EC.presence_of_all_elements_located(locator))
                ele = self.driver.find_element_by_css_selector(value)
                self.logger.info("获取到的元素为--->")
                self.logger.info(ele)
                return ele

            elif by == 'link_text':
                WebDriverWait(self.driver, 10).until(
                    expected_conditions.invisibility_of_element(
                        self.driver.find_element_by_link_text(value)))
                ele = self.driver.find_element_by_link_text(value)
                return ele

            elif by == 'name':
                WebDriverWait(self.driver, 10).until(
                    expected_conditions.invisibility_of_element(
                        self.driver.find_element_by_name(value)))
                ele = self.driver.find_element_by_name(value)
                return ele

            elif by == 'classname':

                locator = (By.CLASS_NAME, value)
                WebDriverWait(self.driver, 20, 0.5).until(
                    EC.presence_of_all_elements_located(locator))
                ele = self.driver.find_element_by_class_name(value)
                return ele

            elif by == 'xpaths':
                # locator = (By.XPATH,value)
                # WebDriverWait(self.driver,10,0.5).until(
                #     expected_conditions.presence_of_all_elements_located(locator)
                # )
                # ele = self.driver.find_elements(locator)
                sleep(4)
                ele = self.driver.find_elements_by_xpath(value)
                self.logger.info("获取到的元素为--->")
                self.logger.info(ele)
                return ele

            elif by == 'classnames':
                locator = (By.CLASS_NAME, value)
                WebDriverWait(self.driver, 20, 0.5).until(
                    EC.presence_of_all_elements_located(locator))

                eles = self.driver.find_elements_by_class_name(value)
                self.logger.info("获取到的元素为--->")
                self.logger.info(eles)
                return eles
            elif by == 'linktexts':
                WebDriverWait(self.driver, 20, 0.5).until(
                    expected_conditions.invisibility_of_element(
                        self.driver.find_elements_by_link_text(value)))
                ele = self.driver.find_elements_by_link_text(value)
                return ele

        except:
            print("11112222")
            self.logger.info(self.log.iferrorinfo())

    def get_childelement(self, elements, key):
        '''
        获取元素
            '''
        data = self.rean_ini.get_value(key)
        by = data.split('>')[0]
        value = data.split('>')[1]
        try:
            if by == 'id':
                ele = elements.find_element_by_id(value)
                return ele
            elif by == 'xpath':
                ele = elements.find_element_by_xpath(value)
                return ele
        except:
            self.logger.info(self.log.iferrorinfo())
Esempio n. 4
0
    def setUp(self):
        log = UserLog()
        self.logging = log.get_log()

        self.driver = webdriver.Chrome()
        self.url = "http://192.168.0.134:9000/ECShop_V2.7.2_UTF8_Release0604/upload66/user.php"