Example #1
0
class ZenTaoBug():
    #定位登录
    loc1 = ("id", "account")
    loc2 = ("name", "password")
    loc3 = ("id", "submit")

    #添加bug
    loc_test = ("link text" "测试")
    loc_bug = ("link text", "Bug")
    loc_addbug = ("xpath", ".//*[@id='createActionMenu']/a")
    loc_truck = ("xpath", ".// *[ @ id = 'openedBuild_chosen'] / ul")
    loc_truck_add = ("xpath",
                     ".// *[ @ id = 'openedBuild_chosen'] / div / ul / li")
    loc_input_title = ("id", "title")
    loc_avse = ("css select", "#submit")

    #需要先切换frame
    loc_input_body = ("class name", ".article-content")

    def __init__(self):
        self.driver = driver
        self.zentao = Base(self.driver)

    def login(self, user="******", psw="123456"):
        self.zentao.sendkeys(self.loca1, user)
        self.zentao.sendkeys(self.loca2, psw)
        self.zentao.click(self.loca3)
Example #2
0
class LoginPage():
    def __init__(self, driver):
        self.driver = driver
        self.b = Base(self.driver)

    def login(self, usr="******", psw="666666"):
        self.driver.get(
            "http://47.97.160.167:8980/weibofenqi-manager/login/index.do")
        self.driver.maximize_window()
        sleep(1)
        self.b.clear(("css selector", ".formBox>form>input:nth-child(1)"))
        self.b.send(("css selector", ".formBox>form>input:nth-child(1)"), usr)
        self.b.clear(("css selector", ".formBox>form>input:nth-child(3)"))
        self.b.send(("css selector", ".formBox>form>input:nth-child(3)"), psw)
        self.b.click(("css selector", ".formBox>form>input:nth-child(5)"))
        # self.driver.find_element_by_css_selector(".formBox>form>input:nth-child(1)").send_keys(usr)
        # self.driver.find_element_by_css_selector(".formBox>form>input:nth-child(3)").send_keys(psw)
        # self.driver.find_element_by_css_selector(".formBox>form>input:nth-child(5)").click()

    def get_login_result(self):
        try:
            r = self.b.get_text(("css selector", "#sessionInfoDiv>strong"))
            return r
        except:
            r = ""
            return r
Example #3
0
def login(driver,user="******",psw="123456"):
    "普通登录函数"
    zen = Base(driver)
    driver.get(url)
    zen.sendKeys(loc1,user)
    zen.sendKeys(loc2,psw)
    zen.click(loc3)
Example #4
0
def _login(driver, host, user="******", psw="123456"):
    '''普通登录函数'''
    zen = Base(driver)
    driver.get(host + "/zentao/user-login-L3plbnRhby8=.html")
    zen.sendKeys(loc1, user)
    zen.sendKeys(loc2, psw)
    zen.click(loc3)
    time.sleep(2)
Example #5
0
def _login(driver, host, user='******', psw='123456'):
    '''普通登录函数'''
    ximopanda = Base(driver)
    driver.get(host)
    ximopanda.sendKeys(loc1, user)
    ximopanda.sendKeys(loc2, psw)
    ximopanda.click(loc3)
    time.sleep(2)
Example #6
0
def _loginShop(driver, host ,user=config["shopName"], psw=config["shopPwd"]):
    zen = Base(driver)
    driver.maximize_window()
    driver.get(host+"/?_plat=shop")
    zen.sendKeys(loc1, user)
    zen.sendKeys(loc2, psw)
    zen.click(loc3)
    t = zen.get_text(loc6)
    assert text_0 in t
Example #7
0
 def test_a(self):
     """ 用例说明:1111 """
     self.driver.get("https://www.baidu.com")
     baidu = Base(self.driver)
     loc1 = ("id", "kw")
     loc2 = ("id", "su")
     baidu.sendKeys(loc1, "python")
     time.sleep(2)
     baidu.click(loc2)
     time.sleep(2)
Example #8
0
def _login(driver, host, user='******', psw='5423110.'):
    '''
    登录函数
    '''
    imooc = Base(driver)
    driver.get(host + '/user/newlogin')
    imooc.max()
    imooc.sendKeys(loc1, user)
    imooc.sendKeys(loc2, psw)
    imooc.click(loc3)
    time.sleep(2)
Example #9
0
def test_guge():
    driver = webdriver.Chrome()
    web = Base(driver)  # 实例化
    driver.get("https://www.baidu.com")
    loc_1 = ("id", "kw")
    web.send(loc_1, "hello")
    loc_2 = ("id", "su")
    web.click(loc_2)

    # Python is likely shutting down
    '''driver.close()'''
Example #10
0
def _loginH5(driver, user=config["h5Name"], psw=config["h5Pwd"],path=config["h5path"]):

    zen = Base(driver)
    driver.set_window_size(500,1100)
    driver.get(path)
    zen.sendKeys(loc1, user)
    zen.sendKeys(loc2, psw)
    zen.click(loc4)
    time.sleep(2)
    t = zen.get_text(loc7)
    assert t == text_1
Example #11
0
def _loginAdmin(driver, host, user=config["adminName"], psw=config["adminPwd"]):

    zen = Base(driver)
    driver.maximize_window()
    driver.get(host+"/?_plat=admin")
    zen.sendKeys(loc1, user)
    zen.sendKeys(loc2, psw)
    zen.click(loc3)
    time.sleep(2)
    t = zen.get_text(loc6)
    assert text_0 in t
Example #12
0
class LoginPage():
    '''登录类'''
    def __init__(self, driver):
        #获取浏览器句柄
        self.driver = driver

        #将被操作的excel文件路径,及具体工作薄
        real_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
        data_path = os.path.join(os.path.join(real_path, "data"),
                                 "cze_data.xls")
        sheetName = "login"  #工作薄内容为登录的操作步骤数据

        #读取excel文件,并实例化
        data = Common_Read(data_path, sheetName)

        #转化excel文件数据为可操作字典数据
        self.data_value = data.dict_data()

        #实例化浏览器基本操作类
        self.b = Base(self.driver)

    def login(self, username, password):
        '''用户登录函数'''
        list_value = {}
        for i in range(len(self.data_value)):
            list_value["loca%d" % (i + 1)] = (self.data_value[i]["type"],
                                              self.data_value[i]["value"])

        #调用浏览器中基本操作事件函数,如:send(定位元素并填入数据)、click(定位元素,并点击)
        self.b.send(list_value["loca1"], username)
        self.b.send(list_value["loca2"], password)
        time.sleep(8)
        self.b.click(list_value["loca3"])
        # self.driver.get_screenshot_as_file(r"C:\Users\safecode\Desktop\selenium_bug\%s_login_Result.png" %username)
        time.sleep(1)
        return self.driver

    def login_test(self, username, password):
        '''用户登录函数'''
        print(username, password)
        list_value = {}
        for i in range(len(self.data_value)):
            list_value["loca%d" % (i + 1)] = (self.data_value[i]["type"],
                                              self.data_value[i]["value"])

        #调用浏览器中基本操作事件函数,如:send(定位元素并填入数据)、click(定位元素,并点击)
        self.b.send(list_value["loca1"], username)
        time.sleep(1.5)
        self.b.send(list_value["loca2"], password)
        time.sleep(1.5)
        self.b.click(list_value["loca3"])
        time.sleep(5)
Example #13
0
def _login(driver, host, user="******", psw="a111111"):
    '''
    登录函数
    '''
    adviser = Base(driver)
    driver.get(
        host +
        "/account/login/index.htm?weChatType=aitou&referrer=http://m.dev.hbec.com/adviser/index/main#/"
    )
    adviser.sendKeys(loc_phone, user)
    adviser.click(loc_next)
    adviser.sendKeys(loc_password, psw)
    adviser.click(loc_login)
Example #14
0
class LoginPage():
#初始化登录页面中用到的参数,对base进行实例化
    def __init__(self,driver):
        #对导入的base进行实例化
        self.base = Base(driver)
        self.driver = driver
        #定位用户名元素的参数
        self.loc_user = ("id","txtUserName")
        #定位密码元素的参数
        self.loc_pwd = ("id","txtPassWord")
        #定位登录按钮元素的参数
        self.button = ("id","btnSubmit")
        #定位登录成功后首页右上角出现的用户名
        self.home_page_username = ("id","userName")

#定义输入用户名方法
    def input_username(self,user_name):
        self.user_name = user_name
        self.base.send_key(self.loc_user,self.user_name)

#定义输入密码方法
    def input_pwd(self,user_pwd):
        self.user_pwd = user_pwd
        self.base.send_key(self.loc_pwd,self.user_pwd)

#定义点击登录方法
    def click_submit(self):
        self.base.click(self.button)

#获取登录后右上角的用户名
    def get_login_username(self):
        try:
            ele = self.base.findElement(self.home_page_username)
            username = ele.text
            return username
        except:
            return ""

#判断元素是否包含文本
    def is_login_sucess(self,text):
        result = self.base.is_text_in_element(self.home_page_username,text)
        return result

#判断是否存在alert弹窗,有的话就关闭,没有就忽略
    def is_alert_exist(self):
        result = self.base.is_alert_exist()
        if result:
            result.accept()
        else:
            pass
def addResidential():
    """删除楼盘"""
    try:
        mybase = Base()
        mybase.open(page.residentiaPage, residentiaPage.searchResidentialModule['search_btn'], havaFrame=False);consoleLog(u'打开JSP页面')
        # mybase.open(Page.residentiaPage, (By.ID, 'search_btn'), havaFrame=False)
        sql = 'select residential_name from residential where residential_name like "AutoTest-%" and deleted<>1'
        ResidentiaName = sqlbase.serach(sql)[0];consoleLog(u'查询结果:%s' % ResidentiaName)
        # ResidentiaName='AutoTest-0706-103107'
        mybase.input_text((By.CSS_SELECTOR, "#residential_name"), ResidentiaName,event=u'输入楼盘名称:')\
            # ;consoleLog(u'输入楼盘名称')
        mybase.click((By.ID, 'search_btn'));consoleLog(u'点击查找')
        mybase.staleness_of(residentiaPage.searchResidentialModule['tr_residential']);consoleLog(u'等待数据刷新')
        mybase.click((By.CSS_SELECTOR,
                           '#residential + div > div:nth-child(2) > div > div:nth-child(2) > div:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(17) > div > button:nth-child(5)'));consoleLog(u'点击删除')  # 点击删除
        mybase.click((By.CSS_SELECTOR, 'div>a>span>span'),1);consoleLog(u'确定删除')  # 点击确定
        mybase.click((By.ID, 'search_btn'));consoleLog(u'再次查找')  # 再次查找
        try:
            WebDriverWait(mybase.driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,
                                                                                   '#residential + div > div:nth-child(2) > div > div:nth-child(2) > div:nth-child(2) > table > tbody > tr:nth-child(1) > td:nth-child(11) ')),
                                                 u'未找确定楼盘 %s 信息' % ResidentiaName)
            raise Exception(u'楼盘 %s 信息存在,删除失败'%ResidentiaName)
        except u'未找确定楼盘 %s 信息' % ResidentiaName:
            consoleLog(u'楼盘删除成功')
    finally:
        mybase.driver.quit()
Example #16
0
def _login(driver,host,user='******',psw='5423110.'):
    '''
    登录函数
    '''
    print('--session --start---!')
    driver.get(host+'/user/newlogin')
    driver.delete_all_cookies()
    driver.refresh()

    imooc = Base(driver)
    imooc.max()
    imooc.sendKeys(loc1,user)
    imooc.sendKeys(loc2,psw)
    imooc.click(loc3)
    time.sleep(2)
Example #17
0
class Login_Blog():
    '''登录类封装'''
    def __init__(self,driver):
        '''初始化driver参数'''
        self.driver = driver
        self.driver_n = Base(self.driver)


    def input_user(self,username):
        '''输入用户名'''

        username_locator = ("id","LoginName")
        self.driver_n.send_keys(username_locator,username)

        # WebDriverWait(self.driver,10).until(lambda x: x.find_element("id","LoginNamexx")).clear()
        # WebDriverWait(self.driver, 10).until(lambda x: x.find_element("id", "LoginNamexx")).send_keys(username)

    def input_psw(self,psw):
        '''输入密码'''

        password_locator = ("id","Password")
        self.driver_n.send_keys(password_locator,psw)


        # self.driver.find_element_by_id("Password").clear()
        # self.driver.find_element_by_id("Password").send_keys(psw)

    def click_button(self):
        '''点击登录按钮'''

        loginbutton_locator = ("id","submitBtn")
        self.driver_n.click(loginbutton_locator)

        # self.driver.find_element_by_id("submitBtn").click()


    def login(self,username,psw):
        '''登录公共方法'''

        try:
            self.input_user(username)
            self.input_psw(psw)
            self.click_button()
        except Exception as msg:
            print(u"异常原因%s"%msg)
            nowTime = time.strftime("%Y%m%d.%H.%M.%S")
            t = self.driver.get_screenshot_as_file(os.path.join(pic_path,'%s.jpg' % nowTime))
            print(u"截图结果:%s"%t)
def addUser(username ,userphone ,userpost ,userrole ,usermail):
    """新增用户"""
    try:
        base=Base()
        base.open(page.userPage, userPage.addUser_loc, havaFrame=False)
        base.click(userPage.addUser_loc)
        base.input_text(userPage.addUserMould['user_name_loc'], username)
        base.type_combotree(userPage.addUserMould['user_dep_loc'], '00000000000000000000000000000000')
        base.input_text(userPage.addUserMould['user_phone_loc'], userphone)
        base.type_select(userPage.addUserMould['user_post_loc'], userpost)
        base.type_select(userPage.addUserMould['user_role_loc'], userrole)
        base.input_text(userPage.addUserMould['user_mail_loc'], usermail)
        base.click(userPage.addUserMould['submit_loc'])
        base.check_submit()
        consoleLog(u'新增用户成功')
    finally:
        base.driver.quit()
def auditHouse():
    """审核房源"""
    try:
        base = Base()
        #需要从配置文件读取新增的房源信息才能做审核操作
        residential = get_conf('residential', 'residentialname')
        building = get_conf('residential', 'buildingname')
        unit = get_conf('residential', 'unitname')
        houseno = get_conf('residential', 'housenoname')
        address = residential + building + unit + houseno
        base.open(page.houseAuditPage,
                  houseAuditPage.houseAuditPageloc['audit_btn'])
        base.input_text(houseAuditPage.searchMould['residentia_name_loc'],
                        residential)
        base.input_text(houseAuditPage.searchMould['building_name_loc'],
                        building)
        base.input_text(houseAuditPage.searchMould['unit_name_loc'], unit)
        base.input_text(houseAuditPage.searchMould['houseno_name_loc'],
                        houseno)
        base.click(houseAuditPage.searchMould['search_button_loc'])
        base.staleness_of(houseAuditPage.searchMould['tr_house'])
        base.script('$("#audit_btn").click()')
        base.click(houseAuditPage.houseAuditPageloc['cancel_btn'])  # 审核通过
        for i in range(5):
            try:
                base.click(
                    houseAuditPage.
                    houseAuditPageloc['iszCommonWorkflowPageSure'])  # 确定
                break
            except:
                base.click(
                    houseAuditPage.houseAuditPageloc['cancel_btn'])  # 审核通过
        base.check_submit()
        try:
            base.solr('house', get_conf('testCondition', 'test'))
            consoleLog(u'solr的house-core增量成功')
        except:
            consoleLog(Exception.message, level='e')
            consoleLog(u'执行house-core的增量失败,请检查solr是否正常', level='w')
            pass
        consoleLog(u'房源 %s审核成功' % address)
        house = sqlbase.serach(
            "SELECT residential_id,building_id,unit_id,house_no_id,house_id,house_code from house where property_name like '%s%%' and deleted = 0"
            % address.encode('utf-8'))
        set_conf('residential',
                 residentialID=house[0],
                 buildingID=house[1],
                 unitID=house[2],
                 housenoID=house[3])
        set_conf('houseInfo', houseID=house[4], houseCode=house[5])

    finally:
        base.driver.quit()
Example #20
0
class LoginPage():
    def __init__(self, driver):  #初始化
        self.driver = driver
        self.b = Base(self.driver)

    def login(self, uesr="admin", psw="123456"):
        self.driver.get("http://127.0.0.1/zentao/user-login.html")
        time.sleep(3)
        self.b.send("xpath", ".//*[@id='account']", "admin")
        self.b.send("css selector", "[name='password']", "123456")
        self.b.click("css selector", "#submit")

    def get_login_reslut(self):  #断言
        #time.sleep(3)
        #try:
        #t = self.b.get_text("css selector", "#userMenu>a")
        #return t
        #except:
        #return ""
        self.b.get_text("css selector", "#userMenu>a", timeout=5)
def deleteHouseContractEnd():
    """删除委托合同终止结算"""
    try:
        base = Base()
        base.open(
            page.contractEndPage,
            houseContractEndPage.searchMould['contract_search_button_loc'],
            havaFrame=False)
        base.click(houseContractEndPage.addContractEndMould['tab_info'],
                   index=1)
        #配置文件读取待审核的委托合终止结算
        contractNum = get_conf('houseContractInfo', 'contractnum')
        consoleLog(u'查询委托合同 %s 是否存在终止结算' % contractNum)

        sql = "SELECT * from house_contract where contract_num = '%s' and deleted = 0 and audit_status = 'APPROVED' and contract_status != 'EFFECTIVE'" % contractNum.encode(
            'utf-8')
        if sqlbase.get_count(sql) > 0:
            base.input_text(
                houseContractEndPage.searchMould['end_contract_num_loc'],
                contractNum)
            base.click(
                houseContractEndPage.searchMould['end_search_button_loc'])
            base.staleness_of(
                houseContractEndPage.searchMould['tr_contract_end'])
        else:
            base.click(
                houseContractEndPage.searchMould['end_search_button_loc'])
            base.staleness_of(
                houseContractEndPage.searchMould['tr_contract_end'])
            contractNum = base.script(
                "var a = $('#ContractReceivable_table_wt > div:nth-child(1) > div:nth-child(2) > div.datagrid-view > div.datagrid-view2 > div.datagrid-body > "
                "table > tbody > tr:nth-child(1) > td[field=\"contract_num\"] > div').text();return a",
                True).decode('utf-8')
            consoleLog(u'未找到测试合同的终止结算,随机删除委托合同 %s 的终止结算' % contractNum)
        base.click(houseContractEndPage.addContractEndMould['delete_button'])
        base.click(
            houseContractEndPage.addContractEndMould['delete_button_confirm'])
        base.check_submit()
        consoleLog(u'委托合同 %s 终止结算删除成功' % contractNum)
    finally:
        base.driver.quit()
def deleteCustomer():
    """删除租前客户信息"""
    try:
        base=Base()
        base.open(page.customerListPage, customerPage.listMould['tr_customer'], havaFrame=False)
        #配置文件中读取租前客户信息
        customerName = get_conf('customerInfo', 'customerName')
        sql = "SELECT * from customer where customer_name = '%s' and deleted = 0" % customerName.encode('utf-8')

        if sqlbase.get_count(sql) > 0:
            base.input_text(customerPage.listMould['customer_name_search'], customerName)
            base.click(customerPage.listMould['search_button'])
            base.staleness_of(customerPage.listMould['tr_customer'])
            base.click(customerPage.listMould['delete_button'])
            base.click(customerPage.listMould['alert_confirm'])
            base.check_submit()
            consoleLog(u'租前客户 %s 删除成功' % customerName)
        else:
            consoleLog(u'未找到租前客户 %s,跳过删除' % customerName)
    finally:
        base.driver.quit()
def deleteApartmentContract():
    """删除出租合同"""
    try:
        base=Base()
        base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract'], havaFrame=False)
        #配置文件读取合同编号信息
        contractNum = get_conf('apartmentContractInfo', 'contractnum')
        sql = "SELECT * from apartment_contract where contract_num = '%s' and deleted = 0" % contractNum.encode('utf-8')
        if sqlbase.get_count(sql) > 0:
            base.input_text(apartmentContractPage.searchContractMould['contract_num_loc'], contractNum.decode('utf-8'))
            base.click(apartmentContractPage.searchContractMould['search_button_loc'])
            base.staleness_of(apartmentContractPage.searchContractMould['tr_contract'])
            base.script("$('#data_perm_btn').click()")
            base.click(apartmentContractPage.addApartmentContractMould['delete_button_confirm'])
            base.check_submit()
            consoleLog(u'出租合同 %s 删除成功' % contractNum)
        else:
            consoleLog(u'未找到出租合同 %s ,跳过删除用例' % contractNum)

    finally:
        base.driver.quit()
def addHouseContact():
    """审核委托合同"""
    try:
        base = Base()
        base.open(page.entrustContractPage,
                  houseContractPage.contractSearchMould['tr_contract'],
                  havaFrame=False)
        #配置文件读取合同编号
        contractNum = get_conf('houseContractInfo', 'contractNum')
        sql = "SELECT * from house_contract WHERE contract_num = '%s' and deleted = 0" % contractNum.encode(
            'utf-8')
        if sqlbase.get_count(sql) != 0:
            base.input_text(
                houseContractPage.contractSearchMould['contract_num_loc'],
                contractNum)
            base.click(
                houseContractPage.contractSearchMould['search_button_loc'])
            base.staleness_of(
                houseContractPage.contractSearchMould['tr_contract'])
            base.click(
                houseContractPage.addHouseContractMould['delete_button'])
            base.click(houseContractPage.
                       addHouseContractMould['delete_button_confirm'])
            base.check_submit()
            consoleLog(u'委托合同删除成功')
        else:
            consoleLog(u'未找到委托合同 %s,略过删除功能' % contractNum)
    finally:
        base.driver.quit()
def auditApartmentContract():
    """删除核出租合同终止结算"""
    try:
        base = Base()
        base.open(page.contractEndPage,
                  apartmentContractEndPage.searchMould['tr_contract_end'],
                  havaFrame=False)
        contractNum = get_conf('apartmentContractInfo', 'contractnum')
        sql = "SELECT * from apartment_contract where contract_num = '%s' and deleted = 0 and contract_status != 'EFFECTIVE'" % contractNum.encode(
            'utf-8')
        if sqlbase.get_count(sql) > 0:
            base.input_text(
                apartmentContractEndPage.searchMould['contract_num_loc'],
                contractNum)
        else:
            consoleLog(u'未找到出租合同终止结算的测试数据,跳过删除用例', level='w')
            return
        base.click(apartmentContractEndPage.searchMould['search_button_loc'])
        base.staleness_of(
            apartmentContractEndPage.searchMould['tr_contract_end'])
        base.click(
            apartmentContractEndPage.addContractEndMould['delete_button'])
        base.click(apartmentContractEndPage.
                   addContractEndMould['delete_button_confirm'])
        base.check_submit()
        consoleLog(u'出租合同 %s 终止结算删除成功' % contractNum)
    finally:
        base.driver.quit()
Example #26
0
def auditDefaultAchievement():
    """审核违约业绩"""
    try:
        base = Base()
        base.open(
            page.apartmentAchievementPage,
            apartmentDefaultAchievementPage.searchContractMould['tr_contract'],
            havaFrame=False)
        contractnum = 'WB1-0067404'
        base.input_text(apartmentDefaultAchievementPage.
                        searchContractMould['contract_num_loc'],
                        contractnum.encode('utf-8'))  #输入合同号
        base.click(apartmentDefaultAchievementPage.
                   searchContractMould['search_button_loc'])  #查找
        base.staleness_of(apartmentDefaultAchievementPage.
                          searchContractMould['tr_contract'])  #等待第一条数据刷新
        base.dblclick(
            apartmentDefaultAchievementPage.searchContractMould['tr_contract'],
            apartmentDefaultAchievementPage.
            detailDefaultMoudle['house_code_loc'])  #点击第一条数据
        #数据校验

        base.click(apartmentDefaultAchievementPage.
                   detailDefaultMoudle['audit_button_loc'])  #审核
        base.input_text(apartmentDefaultAchievementPage.
                        detailAchievementMoudle['contract_audit_content'],
                        u'自动化测试审核意见')  #审核意见
        base.click(apartmentDefaultAchievementPage.
                   detailAchievementMoudle['contract_audit_confirm'])  #确定
        base.check_submit()  #等待提交完成

    finally:
        base.driver.quit()
Example #27
0
class Approve_cg():
    def __init__(self,driver):
        self.driver = driver
        self.base = Base(self.driver)
        #定位用户名元素的参数
        self.loc_user = ("id","txtUserName")
        #定位密码元素的参数
        self.loc_pwd = ("id","txtPassWord")
        #定位登录按钮元素的参数
        self.button = ("id","btnSubmit")
        #首页导航菜单中的“涉访管理”按钮元素
        self.loc_sfgl = ("css selector",".nav-feifang-n>a>cite>p")
        #涉访审批管理菜单元素
        self.loc_spgl = ("link text","涉访审批管理")
        #“撤管待审批”菜单元素
        self.loc_cgdsp = ("link text","撤管待审批")
        # 只能用JS来定位到“审批按钮”
        self.appr_butn = '''document.getElementsByTagName('iframe')[2].contentWindow.document.body.
        getElementsByClassName('layui-table-body')[1].getElementsByClassName('layui-btn')[0].click()'''
        #审批结果:选择同意或不同意,index为1是同意,为0是不同意
        self.appr_result = '''document.getElementsByTagName('iframe')[3].contentWindow.document.body.
        getElementsByTagName('fieldset')[1].getElementsByClassName('layui-anim')[1].click()'''
        #审批意见框
        self.appr_idea = '''document.getElementsByTagName('iframe')[3].contentWindow.document.
        body.getElementsByTagName('fieldset')[1].getElementsByClassName('layui-textarea')[0].value=("可以")'''
        #提交审批按钮
        self.appr_submit = '''document.getElementsByTagName('iframe')[3].contentWindow.document.
        getElementById("spButton").click()'''
        #审批“操作成功”提示
        self.submit_tips = ("css selector",".layui-layer-content.layui-layer-padding")

    #登录审批所长帐号、进入列管待审批列表
    def approve_list(self,username,password):
        self.base.send_key(self.loc_user,username)
        self.base.send_key(self.loc_pwd,password)
        self.base.click(self.button)
        self.base.click(self.loc_sfgl)
        self.base.click(self.loc_spgl)
        self.base.click(self.loc_cgdsp)
        time.sleep(2)
        self.driver.execute_script(self.appr_butn)
        time.sleep(2)
        self.driver.switch_to.default_content()

    def approve(self):
        # 执行JS脚本,选择审批结果为:同意
        self.driver.execute_script(self.appr_result)
        #录入审批意见
        self.driver.execute_script(self.appr_idea)
        #提交审批
        self.driver.execute_script(self.appr_submit)
        #提交审批后,页面返回到弹窗之外的页面
        self.driver.switch_to.default_content()

#所长在撤管待审批列表中提交审批,判断是否“操作成功”
    def is_submit_success(self,text):
        result = self.base.is_text_in_element(self.submit_tips,text)
        return result
def addReimbursement():
    """新增报销单"""
    try:
        base = Base()
        base.open(page.apartmentPage,
                  apartmentPage.apartmentMould['tr_apartment'])

        # 配置文件中读取房源
        apartmentCode = get_conf('houseInfo', 'apartmentcode')
        consoleLog(u'确认房源 %s 是否存在' % apartmentCode)
        sql = "SELECT * from apartment where apartment_code = '%s' and deleted = 0 and is_active = 'Y'" % apartmentCode.encode(
            'utf-8')
        if sqlbase.get_count(sql) > 0:
            base.input_text(apartmentPage.apartmentMould['residential_name'],
                            apartmentCode)

        else:
            sql = "SELECT apartment_code from apartment where deleted = 0 and is_active = 'Y' and city_code = '330100' LIMIT 1"
            apartmentCode = sqlbase.serach(sql)[0]
            base.input_text(apartmentPage.apartmentMould['residential_name'],
                            apartmentCode)
        base.click(apartmentPage.apartmentMould['search_btn'])
        base.staleness_of(apartmentPage.apartmentMould['tr_apartment'])
        base.click(apartmentPage.apartmentMould['details_btn'])
        base.click(apartmentPage.apartmentMould['expense_btn'])
        # 报销费用
        base.input_text(apartmentPage.apartmentMould['memo'], u'报销单自动化测试备注')
        base.type_select(apartmentPage.typeMould['item_type'], 'WATER')
        base.type_select(apartmentPage.typeMould['bear_type'], 'COMPANY')
        base.input_text(apartmentPage.apartmentMould['amount'], '666')
        base.type_date(apartmentPage.typeMould['start_date'], u'2017-08-08')
        base.type_date(apartmentPage.typeMould['end_date'], u'2017-08-28')
        base.type_select(apartmentPage.typeMould['vacant'], 'Y')
        base.type_select(apartmentPage.typeMould['first'], 'Y')
        base.type_select(apartmentPage.typeMould['source_bear_id'],
                         'AutoTest-13666666665')
        # 报销人
        base.type_select(apartmentPage.typeMould['moneytype'],
                         'CUSTOMER_AGENT_PYMENT')
        base.type_select(apartmentPage.typeMould['customer_name'], 'AutoTest')
        base.type_select(apartmentPage.typeMould['customer_bank_location'],
                         'ABC')
        base.type_select(apartmentPage.typeMould['bank_card'],
                         '6228481561239334717')
        # base.input_text(base.apartmentMould['brepay_company'],u'杭州爱上租科技有限公司')
        base.click(apartmentPage.apartmentMould['submit_btn'])
        base.check_submit()
        consoleLog(u'房源 %s 的报销单新增成功' % apartmentCode)
        sql = "SELECT expense_num from reimbursement_expense where apartment_id = (SELECT apartment_id from apartment where apartment_code = '%s')" % apartmentCode.encode(
            'utf-8')
        consoleLog(u'记录房源 %s 的报销编号' % apartmentCode)
        num = sqlbase.serach(sql)[0]

        #写入配置文件
        set_conf('houseInfo', apartmentReimbursementNum=num)
    finally:
        base.driver.quit()
Example #29
0
class Login(Base):

    def __init__(self, driver):
        self.base = Base(driver)

    @allure.story('登录操作')
    def login(self):

        # d = u2.connect('emulator-5554')
        # #d.app_install(
        #     #'https://imtt.dd.qq.com/16891/7E569C80A3714D58E77F6173EB8F6329.apk?fsname=com.netease.cloudmusic_5.7.2_130.apk&csr=1bbd')
        # d(resourceId='com.netease.cloudmusic:id/q6').wait(timeout=5)
        # d(resourceId='com.netease.cloudmusic:id/q6').click_exists(timeout=3)
        # d(resourceId='com.netease.cloudmusic:id/acb').click_exists(timeout=3)
        # d(resourceId="com.netease.cloudmusic:id/q1").click_exists(timeout=3)
        # d(resourceId="com.netease.cloudmusic:id/i9").set_text("13226349780")
        # d(resourceId="com.netease.cloudmusic:id/i7").set_text("*********")
        # d(resourceId='com.netease.cloudmusic:id/q1').click_exists(timeout=3)
        self.base.click(setting)
        self.base.click(login)
        self.base.click(login_phone)
        self.base.send_keys(phone_input, phone_input_c)
Example #30
0
class Mgsqgl():
    def __init__(self, driver):
        self.driver = driver
        self.base = Base(self.driver)
        #定位用户名元素的参数
        self.loc_user = ("id", "txtUserName")
        #定位密码元素的参数
        self.loc_pwd = ("id", "txtPassWord")
        #定位登录按钮元素的参数
        self.button = ("id", "btnSubmit")
        #首页导航栏右箭头
        self.nav_left = ("css selector", "#nav_left>img")
        #定位导航菜单敏感时期管理
        self.menu_mgsqgl = ("css selector", ".nav-minganshiqi-n>a>cite>p")
        #新增敏感时期按钮
        self.loc_add_mgsq = ("id", "btnAddMgsq")
        #新增敏感时期:名称
        self.loc_add_mgsq_mc = ("id", "mc")
        #新增敏感时期:有效期始
        self.loc_add_mgsq_yxqs = ("id", "yxqs")
        #新增敏感时期:有效期止
        self.loc_add_mgsq_yxqz = ("id", "yxqz")
        #日历选择框中:现在
        self.loc_date_now = ('css selector', '.laydate-btns-now')
        #日历选择框中:4-30
        self.loc_date_other = (
            'xpath',
            ".//*[@id='layui-laydate2']/div[1]/div[2]/table/tbody/tr[5]/td[5]")
        #敏感时期类型:
        self.loc_mgsqlx = ("css selector", ".layui-input.layui-unselect")
        #敏感时期类型:普通涉访人员
        self.loc_ptsfry = (
            "css selector",
            ".layui-unselect.layui-form-select.layui-form-selected>dl:nth-child(2)"
        )
        #敏感时期弹窗:保存按钮
        self.loc_save = ("xpath", "html/body/div[1]/form/div[5]/a")
        #敏感时期弹窗:关闭按钮
        self.loc_close = ("xpath", "html/body/div[1]/form/div[5]/button")
        #是否设置预警值弹窗:确定按钮
        self.loc_yj_confirm = ("xpath", ".//*[@id='layui-layer3']/div[3]/a[1]")
        #是否设置预警值弹窗:取消按钮
        self.loc_yj_cancel = ("xpath", ".//*[@id='layui-layer3']/div[3]/a[2]")
        #设置预警值弹窗窗口id,用于判断这个窗口是否打开了
        self.loc_yj_mc = ("id", "mc")
        #-------------------预警设置页面------------------------
        #设置预警值:蓝色预警
        self.loc_yjfz_lsyj = ("xpath", ".//*[@id='yjFz']/li[1]/div/input")
        #设置预警值:提交按钮
        self.loc_szyjz_submit = ("css selector", ".submit_btn")
        #提交提示   /删除成功提示共用
        self.submit_tips = ("css selector",
                            ".layui-layer-content.layui-layer-padding")
        #点击列表页的查看按钮
        self.loc_list_view = '''document.getElementsByTagName('iframe')[1].contentWindow.document.
        body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[0].click()'''
        #------------------查看弹窗 ------------------
        #title  与查看报告共用
        self.loc_title = ("css selector", ".layui-layer-title")
        #-----------------编辑弹窗--------------------
        self.loc_list_edit = '''document.getElementsByTagName('iframe')[1].contentWindow.document.
        body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[1].click()'''
        #---编辑弹窗:提交按钮
        self.loc_edit_submit = ("css selector", ".layui-btn")
        #----------------人员导入---------------
        self.loc_list_import = '''document.getElementsByTagName('iframe')[1].contentWindow.document.
        body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[2].click()'''
        #-人员导入:管控来源
        self.loc_gkly = ("css selector", ".layui-unselect.layui-form-select")
        # 管控来源下拉选项:
        self.loc_gabjb = ("css selector",
                          ".layui-anim.layui-anim-upbit:nth-child(2)")
        #导入文件
        self.loc_file = ("id", "file")
        #提交按钮
        self.loc_import_submit = ("css selector", ".layui-btn")
        #导入结果提示框标题
        self.loc_import_mess_title = ("css selector", ".layui-layer-title")
        #-----------列表:删除按钮----
        self.loc_list_delete = '''document.getElementsByTagName('iframe')[1].contentWindow.document.
        body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[3].click()'''
        #删除提示框:确定删除按钮
        self.loc_dele_butn = ("css selector", ".layui-layer-btn0")
        #-----------列表:查看报告按钮-----
        self.loc_view_report = '''document.getElementsByTagName('iframe')[1].contentWindow.document.
        body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[4].click()'''

#登录帐号

    def login(self, username, passwd):
        self.base.send_key(self.loc_user, username)
        self.base.send_key(self.loc_pwd, passwd)
        self.base.click(self.button)

#进入敏感时间管理列表页,“新增敏感时期”

    def mgsqgl_list(self):
        self.base.click(self.nav_left)
        time.sleep(2)
        self.base.click(self.menu_mgsqgl)
        self.driver.switch_to.frame(1)
        time.sleep(2)
        self.base.click(self.loc_add_mgsq)
        time.sleep(2)
        self.driver.switch_to.default_content()
        self.driver.switch_to.frame("layui-layer-iframe2")
        time.sleep(2)
        self.base.send_key(self.loc_add_mgsq_mc, "国庆节")
        self.base.click(self.loc_add_mgsq_yxqs)
        self.base.click(self.loc_date_now)
        self.base.click(self.loc_add_mgsq_yxqz)
        self.base.click(self.loc_date_other)
        self.base.click(self.loc_mgsqlx)
        self.base.click(self.loc_ptsfry)

#新增敏感时期后,点击“保存”

    def mgsqgl_save(self):
        self.base.click(self.loc_save)
        self.driver.switch_to.default_content()
        self.driver.switch_to.frame(1)
        time.sleep(2)

#新增敏感时期后,点击“关闭”

    def mgsqgl_close(self):
        self.base.click(self.loc_close)
        self.driver.switch_to.default_content()
        self.driver.switch_to.frame(1)

#是否出现“是否设置预警值”的弹窗

    def is_set_early_warn(self):
        try:
            ele = self.base.findElement(self.loc_yj_confirm)
            return True
        except:
            return False

#将新增敏感时期保存后,弹出是否进行预警值设置的点击按钮单独提出来,便于后续分别调用
#点击取消按钮

    def mgsqgl_qxyj(self):
        self.base.click(self.loc_yj_cancel)

#点击确定按钮

    def mgsqgl_jryj(self):
        self.base.click(self.loc_yj_confirm)

#是否进入设置预警值的页面,用于判断新增敏感时期并保存后是点击确定成功进入了预警值设置,还是点击取消成功未进入预警值设置

    def is_open_early_warn(self):
        try:
            self.driver.switch_to.default_content()
            self.driver.switch_to.frame(2)
            ele = self.base.findElement(self.loc_yj_mc)
            return True
        except:
            return False

#设置预警值,修改了蓝色预警值,提交

    def szyjz(self, value):
        self.base.clear(self.loc_yjfz_lsyj)
        self.base.send_key(self.loc_yjfz_lsyj, value)
        self.base.click(self.loc_szyjz_submit)
        self.driver.switch_to.default_content()

#是否提交成功  此方法未用上,因为提示太短,获取不到

    def is_submit_success(self, text):
        result = self.base.is_text_in_element(self.submit_tips, text)
        return result

#点击列表上的查看按钮

    def click_view(self):
        self.base.click(self.nav_left)
        time.sleep(2)
        self.base.click(self.menu_mgsqgl)
        time.sleep(2)
        self.driver.execute_script(self.loc_list_view)
        self.driver.switch_to.default_content()

#点击列表上的编辑按钮

    def click_edit(self):
        self.base.click(self.nav_left)
        time.sleep(2)
        self.base.click(self.menu_mgsqgl)
        time.sleep(2)
        self.driver.execute_script(self.loc_list_edit)
        self.driver.switch_to.default_content()
        self.driver.switch_to.frame(2)

#判断弹窗的标题文本是否包含“查看”,返回True或False

    def get_title(self, text):
        result = self.base.is_text_in_element(self.loc_title, text)
        return result
#编辑弹窗的标题文本获取为空,所以使用获取窗口中的“提交按钮”文本作为判断

    def get_submit_text(self, text):
        result = self.base.is_text_in_element(self.loc_edit_submit, text)
        return result

#人员导入操作

    def import_mem(self):
        self.base.click(self.nav_left)
        time.sleep(2)
        self.base.click(self.menu_mgsqgl)
        time.sleep(2)
        self.driver.execute_script(self.loc_list_import)
        self.driver.switch_to.frame(2)
        self.base.click(self.loc_gkly)
        self.base.click(self.loc_gabjb)
        self.base.send_key(self.loc_file,
                           r"C:\Users\Ling\Downloads\lksfmb.xlsx")
        self.base.click(self.loc_import_submit)
        self.driver.switch_to.default_content()

    #获取导入结果
    def get_import_result(self, text):
        result = self.base.is_text_in_element(self.loc_import_mess_title, text)
        return result


#删除敏感时期

    def delete(self):
        self.base.click(self.nav_left)
        time.sleep(2)
        self.base.click(self.menu_mgsqgl)
        time.sleep(2)
        self.driver.execute_script(self.loc_list_delete)
        self.driver.switch_to.frame(1)
        self.base.click(self.loc_dele_butn)
        self.driver.switch_to.default_content()

    #删除敏感时期成功
    def del_success(self, text):
        result = self.base.is_text_in_element(self.submit_tips, text)
        return result

    #查看报告
    def view_report(self):
        self.base.click(self.nav_left)
        time.sleep(2)
        self.base.click(self.menu_mgsqgl)
        time.sleep(2)
        self.driver.execute_script(self.loc_view_report)
        self.driver.switch_to.default_content()