def get_element(self, key): read_ini = ReadIni() value = read_ini.get_value(key) if value is not None: left_value = value.split('>')[0] right_value = value.split('>')[1] try: # 这里开始 判断>左边值 用对应的定位方式 # 如 uid 为uiautomator的resourceId定位方式 # resourceId定位 if left_value == 'id': # return self.driver.find_element_by_id(right_value) return WebDriverWait( self.driver, 3, 1).until(lambda x: x.find_element_by_id(right_value)) # class定位 elif left_value == 'classname': return WebDriverWait(self.driver, 3, 1).until( lambda x: x.find_element_by_class_name(right_value)) else: return WebDriverWait(self.driver, 3, 1).until( lambda x: x.find_element_by_xpath(right_value)) except EOFError: # 如果有异常,则截图 或者做出对应操作 now = time.strftime("%Y-%m-%M-%H_%M_%S", time.localtime(time.time())) self.driver.save_screenshot( r"D:\Git\Python\Appium\screenshot\sc" + now) else: return None
def get_element(self, key): read_ini = ReadIni() local = read_ini.get_value(key) if local != None: by = local.split('>')[0] local_by = local.split('>')[1] try: if by == 'id': if local_by == "org.cnodejs.android.md:id/edt_access_token": return self.driver.find_element_by_id( "org.cnodejs.android.md:id/edt_access_token" ).send_keys("rgerwhgewrhew") else: return self.driver.find_element_by_id(local_by) elif by == 'className': return self.driver.find_element_by_class_name(local_by) elif by == 'android_uiautormator': return self.driver.find_element_by_android_uiautomator( local_by) else: return self.driver.find_element_by_xpath(local_by) except: return None else: return None
def get_element(self, key, section=None): read_ini = ReadIni() local = read_ini.get_value(key, section) if local != None: by = local.split('>')[0] local_by = local.split('>')[1] try: 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 == 'pluralclassName': return self.driver.find_elements_by_class_name(local_by) elif by == 'uiselector': return self.driver.find_element_by_android_uiautomator( 'new UiSelector().{0}'.format(local_by)) elif by == 'uiselectorsss': return self.driver.find_elements_by_android_uiautomator( 'new UiSelector().{0}'.format(local_by)) elif by == 'ids': return self.driver.find_elements_by_id(local_by) elif by == 'webcss': # html5,css定位 return self.driver.find_element_by_css_selector(local_by) elif by == 'webxpath': # html5 xpath定位 return self.driver.find_element_by_xpath(local_by) else: return self.driver.find_element_by_xpath(local_by) except: return None else: return None
def get_element(self,key): read_ini = ReadIni() local = read_ini.get_value(key) if local != None: by = local.split('>')[0] local_by = local.split('>')[1] activity = self.driver.current_activity print("activity====================================================",activity,"================================") try: if by == 'id': print("++++++++++++++++++++++++++++++++",local_by,local_by=="org.cnodejs.android.md:id/edt_access_token") # if local_by=="org.cnodejs.android.md:id/edt_access_token": # print("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") # self.driver.find_element_by_id("org.cnodejs.android.md:id/edt_access_token").click() # return self.driver.find_element_by_id("org.cnodejs.android.md:id/edt_access_token").send_keys('abcddd') # else: return self.driver.find_element_by_id(local_by) elif by == 'className': return self.driver.find_element_by_class_name(local_by) elif by == 'android_uiautormator': return self.driver.find_element_by_android_uiautomator(local_by) else: return self.driver.find_element_by_xpath(local_by) except: return None else: return None
def get_element(self, key): read_init = ReadIni() # id?com.android.dialer:id/floating_action_button if 'dialer' in key: local = read_init.get_value(key) if local: by, local_by = local.split('?') if by == 'id': print(self.driver.find_element_by_id(local_by)) return self.driver.find_element_by_id(local_by) elif by == 'className': return self.driver.find_element_by_class_name(local_by) else: return self.driver.find_element_by_xpath(local_by) else: # 或者记录到日志 return None else: local = read_init.get_value(key, section='message_element') if local: by, local_by = local.split('?') if by == 'id': # print(self.driver.find_element_by_id(local_by)) return self.driver.find_element_by_id(local_by) elif by == 'className': return self.driver.find_element_by_class_name(local_by) else: return self.driver.find_element_by_xpath(local_by) else: # 或者记录到日志 return None
def get_element(self, key, section=None): read_ini = ReadIni() local = read_ini.get_element_value(key, section) print local if local != None: by = local.split(">")[0] loacal_by = local.split(">")[1] loacal_bys = local.split(">")[2] try: if by == "id": return self.driver.find_element_by_id(loacal_by) elif by == "classname": return self.driver.find_element_by_class_name(loacal_by) elif by == "text": return self.driver.find_element_by_name( loacal_by ) #find_element_by_android_uiautomator('new UiSelector().text(loacal_by)') elif by == "class": element = self.driver.find_element_by_id(loacal_by) return element.find_elements_by_class_name(loacal_bys) elif by == "link": return self.driver.find_element_by_link_text(loacal_by) else: return self.driver.find_element_by_xpath(loacal_by) except: return None else: return None
def get_database_value(self, by, value): read_database = ReadIni("DataBase.ini") ''' 读取database_ini配置文件 ''' data = read_database.get_value(by, value) data_info = data.split('>') return data_info
def get_class_value(self, by, value): read_menu = ReadIni("class.ini") ''' 读取class_ini配置文件 ''' data = read_menu.get_value(by, value) data_info = data.split('>') return data_info
def get_local_element(self, by, info): read_ini = ReadIni() ''' 读取ini配置文件 ''' data = read_ini.get_value(by, info) data_info = data.split('>') return data_info
def get_element(self, session, key): value = ReadIni().get_value(session, key) if value != None: by = value.split('>')[0] local_by = value.split('>')[1] if by == "id": return self.driver.find_element_by_id(local_by) elif by == "className": return self.driver.find_element_by_id(local_by) else: return self.driver.find_element_by_xpath(local_by) else: return None
def get_element(self, key): read_init = ReadIni() local = read_init.get_value(key) if local != None: type = local.split('>')[0] element = local.split('>')[1] if type == 'id': return self.driver.find_element_by_id(element) elif type == 'classname': return self.driver.find_element_by_class_name(element) else: print("从LocalElement.ini文件中读取不到定位元素") return None
class SendEmail: def __init__(self): config_dir = os.path.dirname( os.path.dirname(os.path.realpath(__file__))) file_path = config_dir + "//config//EmailConfig.ini" self.read_ini = ReadIni(file_path) # ---发送邮件--- def send_email(self, pass_list, fail_list): # 创建一个带附件的实例 msg = MIMEMultipart() # 配置SMTP服务器 smtp_server = self.read_ini.get_value("smtp_server", "Email") username = self.read_ini.get_value("username", "Email") password = self.read_ini.get_value("password", "Email") # 发件人和收件人 sender = self.read_ini.get_value("sender", "Email") to_list = self.read_ini.get_value("to_list", "Email") to_list = to_list.split(',') # 定义邮件头 msg['From'] = sender msg['To'] = ";".join(to_list) msg["Subject"] = u"up360接口自动化测试报告" # 定义邮件正文 pass_num = int(len(pass_list)) fail_num = int(len(fail_list)) count_num = pass_num + fail_num pass_result = "%.2f%%" % (pass_num / count_num * 100) fail_result = "%.2f%%" % (fail_num / count_num * 100) content = "此次一共运行接口个数为%s个,通过个数为%s个,失败个数为%s,通过率为%s,失败率为%s" % ( count_num, pass_num, fail_num, pass_result, fail_result) content = MIMEText(content, _subtype='html', _charset='utf-8') msg.attach(content) # 发送邮件 try: server = smtplib.SMTP() server.connect(smtp_server) server.login(username, password) server.sendmail(sender, to_list, msg.as_string()) server.close() return True except Exception as e: print(e) return False
class Email: def __init__(self): config_dir = os.path.dirname( os.path.dirname(os.path.realpath(__file__))) file_path = config_dir + "//config//EmailConfig.ini" self.read_ini = ReadIni(file_path) # ---发送邮件--- def send_email(self, file_name, report_file): # 创建一个带附件的实例 msg = MIMEMultipart() # 配置SMTP服务器 smtp_server = self.read_ini.get_value("smtp_server", "Email") username = self.read_ini.get_value("username", "Email") password = self.read_ini.get_value("password", "Email") # 发件人和收件人 sender = self.read_ini.get_value("sender", "Email") to_list = self.read_ini.get_value("to_list", "Email") to_list = to_list.split(',') # 定义邮件头 msg['From'] = sender msg['To'] = ";".join(to_list) msg["Subject"] = u"up360自动化测试报告" # 定义邮件正文 content = "请从附件下载测试报告并查看" content = MIMEText(content, _subtype='html', _charset='utf-8') msg.attach(content) # 定义邮件附件 file = MIMEText(open(report_file, 'rb').read(), 'base64', 'gb2312') file["Content-Type"] = 'application/octet-stream' file[ "Content-Disposition"] = 'attachment; filename=' + file_name # 这里的filename可以任意写,写什么名字,邮件中显示什么名字 msg.attach(file) # 发送邮件 try: server = smtplib.SMTP() server.connect(smtp_server) server.login(username, password) server.sendmail(sender, to_list, msg.as_string()) server.close() return True except Exception as e: print(e) return False
def get_element(self, key, section=None): read_ini = ReadIni() local = read_ini.get_value(key, section) if local is not None: # split()通过指定分隔符对字符串进行切片 by = local.split('>')[0] local_by = local.split('>')[1] try: 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) else: return self.driver.find_element_by_xpath(local_by) except: return None else: return None
def get_element(self, key): read_ini = ReadIni() local = read_ini.get_value(key) if local != None: by = local.split('>')[0] local_by = local.split('>')[1] try: 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) else: return self.driver.find_element_by_xpath(local_by) except: #self.driver.save_screenshot("../jpg/test02.png") return None else: return None
def get_element(self, key): read_int = ReadIni() value_array = read_int.get_value(key).split('>') by = value_array[0] name = value_array[1] try: if by == 'id': return self.driver.find_element_by_id(name) elif by == 'name': return self.driver.find_element_by_name(name) elif by == 'className': return self.driver.find_element_by_class_name(name) elif by == 'xpath': return self.driver.find_element_by_xpath(name) else: return None except: return None
def get_element(self,key,node=None): #uiautomator>new UiSelector().text("personal center-outline 个人中心") read_ini = ReadIni() node = node local = read_ini.get_value(key,node) if local != None: by = local.split('>')[0] local_by = local.split('>')[1] if by == 'uiautomator': return self.driver.find_element_by_android_uiautomator(local_by) elif by == 'element_by_className': return self.driver.find_element_by_class_name(local_by) elif by == 'elements_by_className': return self.driver.find_elements_by_class_name(local_by) elif by == 'element_by_xpath': return self.driver.find_element_by_xpath(local_by) else: return self.driver.find_element_by_xpath(local_by) else: return None
def android_driver(self, i, type): print("this is android_driver:", i) # devices_name adb devices write_file = WriteUserCommand() ini_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) read_ini = ReadIni(ini_dir + "//config/ApplyConfig.ini") devices = write_file.get_value('user_info_' + str(i), 'deviceName') port = write_file.get_value('user_info_' + str(i), 'port') apk_name = read_ini.get_value("apk", type) appPackage = read_ini.get_value("package_name", type) appWaitActivity = read_ini.get_value("activity", type) noReset = read_ini.get_value("noReset", type) capabilities = { "platformName": "Android", # "automationName":"UiAutomator2", "deviceName": devices, "app": apk_name, "appWaitActivity": appWaitActivity, "noReset": noReset, "platforVersion": "4.4.4", "appPackage": appPackage, # "chromedriverExecutableDir": ini_dir + "\config\chromedriver\webview", 'recreateChromeDriverSessions': True } driver = webdriver.Remote("http://127.0.0.1:" + port + "/wd/hub", capabilities) time.sleep(10) return driver
def get_element(self, key, section=None): read_ini = ReadIni() local = read_ini.get_value(key, section) if local != None: by = local.split('>')[0] local_by = local.split('>')[1] try: 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 == 'classnames': return self.driver.find_elements_by_class_name(local_by) elif by == 'uiauto': return self.driver.find_element_by_android_uiautomator( local_by) else: return self.driver.find_element_by_xpath(local_by) except: #self.driver.save_screenshot("../jpg/jpg0"+str(i)+".png") return None else: return None
def get_element(self, section, key): read_ini = ReadIni() # "id > cn.com.open.mooc: id / login_lable" local = read_ini.get_value(section, key) if local != None: by = local.split('>')[0] local_by = local.split('>')[1] try: 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 == 'uiautomator': # print('转换前:'+local_by) #打印输出发现中文乱码 return self.driver.find_element_by_android_uiautomator( local_by) else: return self.driver.find_element_by_xpath(local_by) except: #self.driver.save_screenshot("../jpg/test02.png") return None else: return None
def get_element(self, key): read_ini = ReadIni() local = read_ini.get_value(key) if local != None: by = local.split('>')[0] local_by = local.split('>')[1] try: 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 == 'ids': return self.driver.find_elements_by_id(local_by) elif by == 'classNames': return self.driver.find_elements_by_class_name(local_by) elif by == 'UiSelector': return self.driver.find_element_by_android_uiautomator('new UiSelector().text("' + local_by + '")'.replace("'", "'")) else: return self.driver.find_element_by_xpath(local_by) except: # self.driver.save_screenshot("../jpg/test02.png") return None else: return None
def __init__(self): config_dir = os.path.dirname( os.path.dirname(os.path.realpath(__file__))) file_path = config_dir + "//config//EmailConfig.ini" self.read_ini = ReadIni(file_path)