def __init__(self): self.driver = webdriver.Chrome() self.driver.get('http://www.18crm.com') self.login_b = LoginBussiness(self.driver,'../config/LocalElement.ini') self.login_h = LoginHandle(self.driver,'../config/LocalElement.ini') self.rd = ReadIni('../config/TestData.ini') self.base = CommonUtil()
def get_element(self, key, *args): #key 未local_element.ini中等号前面的部分,如:user_name=id>"user_login" key为:user_name read_ini = ReadIni() data = read_ini.get_value(key) data = data.split(">", 1) by = data[0] value = data[1] print('by: ', by, 'value: ', value) try: if by == 'id': return self.driver.find_element_by_id(value) elif by == 'name': return self.driver.find_element_by_name(value) elif by == "linktext": return self.driver.find_element_by_link_text(value) elif by == "partiallinxtext": return self.driver.find_element_by_partial_link_text(value) elif by == 'tagname': return self.driver.find_element_by_tag_name(value) elif by == "classname": return self.driver.find_element_by_class_name(value) elif by == "css": return self.driver.find_element_by_css_selector(value) elif by == "xpath": return self.driver.find_element_by_xpath(value) elif by == 'jsscript': return self.driver.execute_script(value, *args) elif by == "jsasyncscript": return self.driver.execute_async_script(value, *args) except: return None
def get_element(self, key): read_ini = ReadIni() data = read_ini.get_value(key) a = data.split('>') if len(a) == 2: by = data.split('>')[0] value = data.split('>')[1] try: if by == 'id': return self.cc.find_element_by_id(value) elif by == 'class_name': return self.cc.find_element_by_class_name(value) else: return self.cc.find_element_by_xpath(value) except: return None else: by = data.split('>')[0] value = data.split('>')[1] send = data.split('>')[2] try: if by == 'id': return self.cc.find_element_by_id(value).send_keys(send) elif by == 'class_name': return self.cc.find_element_by_class_name(value).send_keys( send) else: return self.cc.find_element_by_xpath(value).send_keys(send) except: return None
def get_lampstandard_element(self, key): read_ini = ReadIni() data = read_ini.get_LocalElement_value("lampstandard", key) by = data.split('>')[0] value = data.split('>')[1] # print(by) # print(value) # try容错处理 try: if by == 'id': return self.driver.find_element_by_id(value) elif by == 'name': return self.driver.find_element_by_name(value) elif by == 'className': return self.driver.find_element_by_class_name(value) else: return self.driver.find_element_by_xpath(value) except: print("未找到该元素") return None # if __name__ == '__main__': # find = FindElement() # find.get_setTemp_element("veal")
def get_element(self, key): read_ini = ReadIni() data = read_ini.get_value(key) data_list = data.split(">") # print(data_list) by = data_list[0] # print(by) value = data_list[1] # print(value) No = 0 if by == "classnames": No = int(data_list[2]) try: if by == "id": return self.driver.find_element_by_id(value) elif by == "name": return self.driver.find_element_by_name(value) elif by == "classname": return self.driver.find_element_by_class_name(value) elif by == "classnames": return self.driver.find_elements_by_class_name(value)[No] elif by == "xpath": return self.driver.find_element_by_xpath(value) except: self.driver.save_screenhot() return None
def __init__(self): unittest.TestCase.__init__(self) xiao_iron = 'E:/xt/xironbardepend/xironbackend/' self.run_method = RunMethod() self.data = GetData(xiao_iron + 'dataconfig/interfacebar1.xlsx', 2) self.send_mai = SendEmail() self.read_int = ReadIni()
def get_element(self, key): read_ini = ReadIni() # 返回register_nickname形式数据 data = read_ini.get_value(key) # 以>进行拆分,第一个是查找形式,第二个是查找参数 by = data.split('>')[0] val = data.split('>')[1] try: if by == 'id': element = self.driver.find_element_by_id(val) return element elif by == 'link_text': element = self.driver.find_element_by_link_text(val) return element elif by == 'class_name': element = self.driver.find_elements_by_class_name(val) return element elif by == 'xpath': element = self.driver.find_element_by_xpath(val) return element else: element = self.driver.find_element_by_css_selector(val) return element except: return None
def get_elements(self, key, *args): read_ini = ReadIni() data = read_ini.get_value(key) data = data.split(">", 1) by = data[0] value = data[1] by = data[0] value = data[1] if by == 'id': return self.driver.find_elements_by_id(value) elif by == 'name': return self.driver.find_elements_by_name(value) elif by == "linktext": return self.driver.find_elements_by_link_text(value) elif by == "partiallinxtext": return self.driver.find_elements_by_partial_link_text(value) elif by == 'tagname': return self.driver.find_elements_by_tag_name(value) elif by == "classname": return self.driver.find_elements_by_class_name(value) elif by == "css": return self.driver.find_elements_by_css_selector(value) elif by == "xpath": return self.driver.find_elements_by_xpath(value) elif by == 'jsscript': return self.driver.execute_script(value, *args) elif by == "jsasyncscript": return self.driver.execute_async_script(value, *args) # if __name__ == '__main__': # fl = Find_Element() # fl.get_element("user_name")
def gather(): config = ReadIni() driver = webdriver.Chrome() filename = os.path.dirname( os.path.dirname(__file__)) + "/image/image.png" logurl = config.get_url("sso_url") driver.implicitly_wait(10) driver.delete_all_cookies() driver.get(logurl) print(driver.get_cookies()) driver.find_element_by_name('username').send_keys( config.get_LOGIN("username")) driver.find_element_by_name('password').send_keys( config.get_LOGIN("password")) driver.save_screenshot(filename) # 截屏 element = driver.find_element_by_class_name('validateCode') # 获取验证码位置 Verification = image.image(element, filename) # 调用识别验证码 driver.find_element_by_name('validateCode').send_keys(Verification) driver.find_element_by_xpath('//input[@value="登 录"]').click() time.sleep(5) ### 获取cookie cookie = driver.get_cookies() print(cookie) jsonCookies = json.dumps(cookie) with open('cookie.txt', 'w') as f: f.write(jsonCookies) time.sleep(3) driver.close()
def __init__(self): self.dt = Data() readIni = ReadIni() self.base_url = readIni.get_value('base_url', 'api') self.schoolweb_url = readIni.get_value('schoolweb_url', 'api') self.req = Request() self.row_total = self.dt.row_total()
def __init__(self, driver): super().__init__(driver) self.driver = driver self.efg = ReadIni(file_name='admin_server_page.ini') self.cfg = ReadIni(is_page_view=False) self.driver.set_page_load_timeout(30) self.driver.set_script_timeout(30) self.logger = get_logger()
def __init__(self): unittest.TestCase.__init__(self) xiao_iron = 'E:/xt/xtcontract/xironbackend/dataconfig/' self.run_method = RunMethod() self.data = GetData(xiao_iron + 'interfacebar1.xlsx', 8) self.send_mai = SendEmail() self.read_int = ReadIni() self.statistic = Dict() self.excel_prop = Dict()
def __init__(self, driver): super().__init__(driver) self.driver = driver self.efg = ReadIni(file_name=file_name) self.cfg = ReadIni(is_page_view=False) self.driver.set_page_load_timeout(30) self.driver.set_script_timeout(30) self.logger = get_logger() self.url = self.cfg.read_config('admin', 'url')
def get_coordinate(self, key, section): read_ini = ReadIni() local = read_ini.get_value(key, section) if local is None: return None local_by = local.split(">")[1] size = self.driver.get_window_size() x = int(float(local_by.split(",")[0]) * size['width']) y = int(float(local_by.split(",")[1]) * size['height']) return x, y
def get_element(self, node_element, element): try: read_ini = ReadIni() data = read_ini.get_value(node_element, element) by = data.split('>')[0] value = data.split('>')[1] result = self.driver.find_element(by, value) except: result = None return result
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 __init__(self,driver): self.manual_handle = ManualHandle(driver) self.home_handle = HomeHandle(driver) self.detail_handle = DetailHandle(driver) self.wallet_handle = WalletPagePage # 获取当前目录 current_dir = os.path.dirname(__file__) # 获取当前目录的父级目录 parent_dir = os.path.dirname(current_dir) path = parent_dir + '\config\dataConfig.ini' self.readIni = ReadIni(path)
def change_base_url(self, host=None): #如果没有传host,则从第一个用例里用正则表达式去匹配host,否则就直接用传入的host if not host: r = re.search(settings.URL_RE, self.url) host = r[0] self.logger.info( "没有传host,从第一个用例里用正则表达式去匹配host,匹配结果是{}".format(host)) #将host记录到ini文件中,方便后续接口使用 read_i = ReadIni() read_i.write_data("base_url", host, "url") self.logger.info("将host记录到ini文件中,方便后续接口使用")
def pre_send_mail(report_name): """发送邮件预处理""" cfg = ReadIni(isPageView=False, file_name="Email_config.ini") message = MIMEMultipart("related") current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) to_addr = cfg.Read_config("Emailer", "To_addr") cc_addr = cfg.Read_config("Emailer", "Cc_addr") user_list = to_addr.split(',') + cc_addr.split(',') sub = "【请阅】固定资产UI自动化测试报告" + current_time user = send_user message['Subject'] = sub message['From'] = user message['To'] = to_addr message['Cc'] = cc_addr # 添加内容(或图片)到邮件正文中 mail_content = """ <p>您好,以下为固资平台UI自动化测试报告,详情请下载附件报告,推荐使用Chrome浏览器查看!</p> <p>ps:请将两个文件放在同一个目录下,再查看html报告,否则无法查看近十次测试统计图。</p> """ # # 添加邮件正文信息 mail_body = MIMEText(mail_content, _subtype='html', _charset='utf-8') message.attach(mail_body) # 添加附件1 ctype, encoding = mimetypes.guess_type(report_name[0]) if ctype is None or encoding is not None: ctype = "application/octet-stream" maintype, subtype = ctype.split("/", 1) att1 = MIMEImage((lambda f: (f.read(), f.close()))(open(report_name[0], 'rb'))[0], _subtype=subtype) att1.add_header("Content-Disposition", "attachment", filename=os.path.basename(report_name[0])) message.attach(att1) # 添加附件2 ctype, encoding = mimetypes.guess_type(report_name[1]) if ctype is None or encoding is not None: ctype = "application/octet-stream" maintype, subtype = ctype.split("/", 1) att2 = MIMEImage((lambda f: (f.read(), f.close()))(open(report_name[1], 'rb'))[0], _subtype=subtype) att2.add_header("Content-Disposition", "attachment", filename=os.path.basename(report_name[1])) message.attach(att2) # 发送邮件 server = smtplib.SMTP() server.connect(email_host) server.login(send_user, password) server.sendmail(user, user_list, message.as_string()) server.close()
def get_element(self, key): read_ini = ReadIni() data = read_ini.get_value(key) by = data.split(">")[0] value = data.split(">")[1] try: if by == "id": return self.driver.find_element_by_id(value) if by == "xpath": return self.driver.find_element_by_xpath(value) except: return None
def get_element(self, section, key): read_ini = ReadIni( 'C:/Users/xx/Desktop/SeleniumPython2/config/LocalElement.ini') #id>com.msjt.sigma:id/id_name local = read_ini.get_value(section, key) by = local.split('>')[0] local_by = local.split('>')[1] if by == 'ids': return self.driver.find_elements_by_id(local_by) elif 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)
def login(self,broswer='Chrome'): ''' 公用登录方法 ''' if broswer == 'Chrome': driver = webdriver.Chrome() driver.get('http://www.18crm.com') driver.maximize_window() fd = FindElement(driver,'../config/LocalElement.ini') rd = ReadIni('../config/TestData.ini') fd.get_element('login','username').send_keys(rd.get_value('public_login','username')) fd.get_element('login','password').send_keys(rd.get_value('public_login','password')) fd.get_element('login','loginButton').click() self.acceptAlert(driver) return driver
def get_element(self,key): read_ini = ReadIni() local = read_ini.get_value(key) by = local.split('>')[0] local_by = local.split('>')[1] if local != None: if by == 'id': return self.driver.find_element_by_id(local_by) elif by == 'className': return self.driver.find_elements_by_class_name(local_by) else: return self.driver.find_element_by_android_uiautomator(local_by) else: return None
def select_brower(): read_ini = ReadIni(node='webdriver') web_driver = read_ini.get_key('webdriver') for wd in web_driver: if wd == 'firefox': return webdriver.Firefox() elif wd == 'ie': return webdriver.Ie() elif wd == '360': wd_option = read_ini.get_value('360') chrome_options = webdriver.ChromeOptions() chrome_options.binary_location = wd_option chrome_options.add_argument(r'--lang=zh-CN') return webdriver.Chrome(chrome_options=chrome_options) elif wd == 'chrome': return webdriver.Chrome()
def get_element(self, key): read_ini = ReadIni() data = read_ini.get_LocalElement_value("RegisterElement", key) by = data.split('>')[0] value = data.split('>')[1] #try容错处理 try: if by == 'id': return self.driver.find_element_by_id(value) elif by == 'className': return self.driver.find_element_by_class_name(value) else: return self.driver.find_element_by_xpath(value) except: print("未找到该元素") return None
def OpenSystem(self): """AW: 登录系统""" try: efg = ReadIni(file_name='loginView.ini') url = self.cfg.Read_config('ALL_URL', 'test_url') user = self.cfg.Read_config('test_account', 'user_name') pd = self.cfg.Read_config('test_account', 'pass_word') self.driver.get(url) self.driver.maximize_window() account = self.get_element('loginView', 'user', efg) pwd = self.get_element('loginView', 'pwd', efg) account.clear() account.send_keys(user) logger.info('输入账号信息') pwd.clear() pwd.send_keys(pd) logger.info('输入密码信息') self.get_element('loginView', 'button', efg).click() time.sleep(5) try: self.closeNotice() time.sleep(3) logger.info('关闭公告弹窗') logger.info('成功登陆系统') except: logger.info('无弹窗,成功登陆系统') except Exception as e: logger.info('系统登陆失败' + e)
class GetElement: def __init__(self, driver, filename=None): self.driver = driver self.filename = filename self.r = ReadIni(self.filename) def get_element_key(self, key, section=None): element_key = self.r.get_value(key, section) if element_key: element_key_list = element_key.split(">") else: element_key_list = None print("配置文件中未取到该元素") return element_key_list def get_element(self, key, section=None): key_list = self.get_element_key(key, section) wait = WebDriverWait(self.driver, 15) print("####################") print(key_list[1]) try: if key_list[0] == 'id': key_tuple = (By.ID, key_list[1]) elif key_list[0] == 'name': key_tuple = (By.NAME, key_list[1]) else: key_tuple = (By.XPATH, key_list[1]) element = wait.until(EC.visibility_of_element_located(key_tuple)) except: print("元素未找到") element = None return element
def setUpClass(cls): get_element = ReadIni() cls.pwd = os.path.join(os.path.dirname(os.getcwd())) cls.file_name = cls.pwd + "\\image\\test001.png" # cls.file_name = get_element.get_value("code_image_url") cls.log = UserLog() cls.logger = cls.log.get_log()
def get_element(self, key): read_ini = ReadIni() data = read_ini.get_value(key) by = data.split('>')[0] value = data.split('>')[1] try: if by == 'id': return self.driver.find_element_by_id(value) elif by == 'name': return self.driver.find_element_by_name(value) elif by == 'classname': return self.driver.find_element_by_classname(value) else: return self.driver.find_element_by_xpath(value) except: return None
class FindKeyCode(object): #根据key找到,按键对应的按键码,并将按键码返回 def get_keyCode(self, key): self.read_ini = ReadIni() data = self.read_ini.get_keypad_value("keyPad", key) return data