示例#1
0
    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
示例#2
0
    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
示例#4
0
	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
示例#5
0
 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
示例#6
0
    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
示例#7
0
 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
示例#8
0
 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
示例#9
0
 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
示例#10
0
 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
示例#11
0
 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
示例#12
0
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
示例#13
0
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
示例#14
0
 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
示例#15
0
 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
示例#16
0
    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
示例#18
0
    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
示例#19
0
 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
示例#21
0
 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
示例#22
0
 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)