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()
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())
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"