class Sendmail: def __init__(self, runningtime): self.user_log = UserLog().get_log() self.read_ini = ReadIni(node='email') self.run_time = runningtime def send_mail(self): sender = self.read_ini.get_value('sender') passwd = self.read_ini.get_value('passwd') receiver = self.read_ini.get_value('receivers') mail_host = self.read_ini.get_value('mail_host') print(sender, passwd, receiver, mail_host) tm = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) msg = MIMEMultipart() msg['Subject'] = Header( self.read_ini.get_value('header') + tm, 'utf-8') msg['From'] = sender msg['To'] = receiver #发送邮件正文 msg.attach( MIMEText( self.read_ini.get_value('content') + str(self.run_time), 'plain', 'utf-8')) #构造附件 lists = [] print(self.read_ini.get_value('path')) for root, dirs, files in os.walk(self.read_ini.get_value('path')): for file in files: if file.endswith(".html"): lists.append(os.path.join(root, file)) lists.sort(key=lambda f: os.stat(f).st_mtime) print(lists) lastmodified = lists[-1] att = MIMEText(open(lastmodified, 'rb').read(), 'base64', 'utf-8') att['Content-Type'] = 'application/octet-stream' att['Content-Disposition'] = 'attachment;filename=' + self.read_ini.get_value( 'filename') msg.attach(att) #发送 try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) smtpObj.login(sender, passwd) smtpObj.sendmail(sender, receiver, msg.as_string()) except Exception as e: print(e) print('发送失败') self.user_log.warn("邮件发送失败:" + tm) else: print('发送成功') self.user_log.info('邮件发送成功') finally: smtpObj.close()
class SetTempHandle(): def __init__(self, driver): self.driver = driver self.setTemp_p = SetTempPage(driver) self.myDevice_p = MyDevicePage(driver) self.loger = UserLog().get_logger() def enter_setTemp(self): # sleep(10) # ele = self.myDevice_p.get_meat_thermometer() # ele.click() # 进入温度设置界面 sleep(8) ele = self.myDevice_p.get_arrow() ele.click() #设置牛肉温度 def setTemp_beef(self): #进入设备控制页面 self.enter_meat_thermometer() #一分熟 self.select_beef() self.one_cook() self.check_toast(msg="牛肉一分熟设置成功") # 三分熟 self.select_beef() self.three_cook() self.check_toast(msg="牛肉三分熟设置成功") #五分熟 self.select_beef() self.five_cook() self.check_toast(msg="牛肉五分熟设置成功") #七分熟 self.select_beef() self.saven_cook() self.check_toast(msg="牛肉七分熟设置成功") #全熟 self.select_beef() self.full_cook() self.check_toast(msg="牛肉全熟设置成功") # 设置羊肉温度 def setTemp_veal(self): #一分熟 self.select_veal() self.one_cook() self.check_toast() #三分熟 self.select_veal() self.three_cook() self.check_toast() #五分熟 self.select_veal() self.five_cook() self.check_toast() #七分熟 self.select_veal() self.saven_cook() self.check_toast() #全熟 self.select_veal() self.full_cook() self.check_toast() # 设置猪肉温度 def setTemp_pig(self): self.select_pig() self.normal_cook() self.check_toast("猪肉温度设置成功") # 设置肌肉温度 def setTemp_chicken(self): self.select_chicken() self.normal_cook() self.check_toast() # 设置火鸡温度 def setTemp_turkey(self): self.select_turkey() self.normal_cook() self.check_toast() # 设置鱼肉温度 def setTemp_fish(self): self.select_fish() self.normal_cook() self.check_toast() def setTemp_other(self): self.enter_meat_thermometer() self.select_other() self.custom_cook(title="其他预设温度") # 进入设备控制页面 def enter_meat_thermometer(self): sleep(5) ele = self.myDevice_p.get_meat_thermometer() ele.click() #toast弹窗检查 def check_toast(self, msg): # 用于生成xpath定位 相当于 "//*[@text='没有找到用户名或密码']" toast_message = "设置成功" message = '//*[@text=\'{}\']'.format(toast_message) # 获取toast提示框内容 toast_element = WebDriverWait( self.driver, 20, 0.5).until(lambda x: x.find_element_by_xpath(message)) print(toast_element.text) #添加断言 assert toast_element.text == "设置成功" self.loger.info(msg) #选择牛肉 def select_beef(self): self.enter_setTemp() sleep(8) self.setTemp_p.get_beef_element().click() sleep(1) # 选择羊肉 def select_veal(self): self.enter_setTemp() sleep(3) self.setTemp_p.get_veal_element().click() sleep(1) # 选择猪肉 def select_pig(self): self.enter_setTemp() sleep(3) self.setTemp_p.get_pork_element().click() sleep(1) # 选择鸡肉 def select_chicken(self): self.enter_setTemp() sleep(3) self.setTemp_p.get_chicken_element().click() sleep(1) # 选择火鸡 def select_turkey(self): self.enter_setTemp() sleep(3) self.setTemp_p.get_turkey_element().click() sleep(1) # 选择鱼肉 def select_fish(self): self.enter_setTemp() sleep(3) self.setTemp_p.get_fish_element().click() sleep(1) def select_other(self): self.enter_meat_thermometer() self.enter_setTemp() sleep(3) self.setTemp_p.get_other_element().click() sleep(2) self.setTemp_p.get_mix_add_element().click() sleep(2) #一分熟 def one_cook(self): ele = self.driver.find_element_by_android_uiautomator( "new UiSelector().text(\"一分熟\")") ele.click() sleep(1) ele = self.setTemp_p.get_preset_element() ele.click() # 三分熟 def three_cook(self): ele = self.driver.find_element_by_android_uiautomator( "new UiSelector().text(\"三分熟\")") ele.click() sleep(1) ele = self.setTemp_p.get_preset_element() ele.click() # 五分熟 def five_cook(self): ele = self.driver.find_element_by_android_uiautomator( "new UiSelector().text(\"五分熟\")") ele.click() sleep(1) ele = self.setTemp_p.get_preset_element() ele.click() # 七分熟 def saven_cook(self): ele = self.driver.find_element_by_android_uiautomator( "new UiSelector().text(\"七分熟\")") ele.click() sleep(1) ele = self.setTemp_p.get_preset_element() ele.click() # 全熟 def full_cook(self): ele = self.driver.find_element_by_android_uiautomator( "new UiSelector().text(\"全熟\")") ele.click() sleep(1) ele = self.setTemp_p.get_preset_element() ele.click() #参考 def normal_cook(self): ele = self.driver.find_element_by_android_uiautomator( "new UiSelector().text(\"参考\")") ele.click() sleep(1) ele = self.setTemp_p.get_preset_element() ele.click() #其他温度 def custom_cook(self, title): slider = self.setTemp_p.get_title_edit_element() slider.send_keys(title) self.setTemp_p.get_add_done_element().click() # self.driver.implicitly_wait(2) # self.move_seekBar(slider,0.4) #滑动温度进度条 def move_seekBar(self, element, percent): # 精度不是很准确,需自己调,当percent为1时可能不会移动到100%,可以尝试1.5或2 # 获取拖动条的宽 width = element.size.get("width") # 获取坐标 x = element.location.get("x") y = element.location.get("y") print(x) print(y) # y = 2272+(2590-2272)/2 # x = 1215 # # [225, 2272][1215, 2590] print(width)