示例#1
0
    def testQuotePriceSuccess(self):
        u"""测试正常报价功能"""
        testcaseId='case_0008'
        print testcaseId
        log=ResultLog()
        log.info("本次操作的测试用例的ID为%s" %testcaseId)
        data_list=self.getQuotePriceDataByTestcaseId(testcaseId)
        LocateQuotePriceObject.LocateQuotePriceObject().getLocateObject(testcaseId,self.browser,data_list)

        LocateElementCommonClass.CommonClass().dealAlert(self.browser)
        self.browser.get_screenshot_as_file("F:\\testresult\\image_SUCCESSquoteprice.png")
        print("image_SUCCESSquoteprice.png ")
    def findElement(self,browser,new_how,old_what,element):
        """定位元素"""
        log=ResultLog()
        browser=browser
        how=new_how
        what=old_what
        try:
            located_element=WebDriverWait(browser,20).until(lambda browser : browser.find_element(by=how,value=what))

        except Exception:
            log.info("元素:%s 定位失败" %(element.encode('utf-8')))
            print ("element: %s is not located" %element)
            raise NameError("element:%s is located filed" %element)
        else:
            log.info("元素:%s 已定位成功" %(element.encode('utf-8')))
            return located_element
    def getLocateMethodAndData(self,element,browser,send_data):
        browser=browser
        locate_object=element
        excel=ReadExcel.ReadExcel()
        locate_method_data_path="F:\\pytest\\xebest-autotest\\Data\\quoteprice_data.xls"
        locate_element_sheet=excel.getTableBySheetName(locate_method_data_path,"objname_locatemethod_locatedata")
        #得到需要定位的元素所在行
        locateObject_rowCol_number_list=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(locate_method_data_path,"objname_locatemethod_locatedata",locate_object)
        rowNumber=locateObject_rowCol_number_list[0]
        #得到需要定位的元素的定位方式所在列
        locateMethod_Key=u"定位方式简述"
        locateMethod_colNumber=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(locate_method_data_path,"objname_locatemethod_locatedata",locateMethod_Key)[1]
        #得到需要定位的元素的定位数据所在列
        locateData_key=u"定位所需数据"
        locateData_colNumber=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(locate_method_data_path,"objname_locatemethod_locatedata",locateData_key)[1]
        #得到判断元素是否需要二次定位的判断条件所在列
        isSecondLocate_key=u"是否需要二次定位"
        SecondLocate_key_colNumber=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(locate_method_data_path,"objname_locatemethod_locatedata",isSecondLocate_key)[1]
        #存储从excel表中取出的定位方式和定位数据,以及判断是否需要二次定位的条件
        old_how=locate_element_sheet.cell_value(rowNumber,locateMethod_colNumber)
        old_what=locate_element_sheet.cell_value(rowNumber,locateData_colNumber)
        secondLocate=locate_element_sheet.cell_value(rowNumber,SecondLocate_key_colNumber)
        # old_how=locate_element_sheet.cell_value(rowNumber,locateMethod_colNumber).encode('utf-8')
        # old_what=locate_element_sheet.cell_value(rowNumber,locateData_colNumber).encode('utf-8')
        # print "元素%s的定位方式为:%s,定位数据为%s" %(element.encode('utf-8'),old_how,old_what)
        locate_method_dict={'id':By.ID,'css':By.CSS_SELECTOR,'xpath':By.XPATH,'linktext':By.LINK_TEXT}


        #new_first_how=locate_method_dict[old_how]
        if not (LocateElementCommonClass.CommonClass().judgeSecondLocateElement(secondLocate)):

            if old_how=="switchHandle":
                index=int(old_what)
                LocateElementCommonClass.CommonClass().switchHandle(browser,index)
                # self.switchWindow(browser,index,locate_object)
            else:
                new_how=locate_method_dict[old_how]
                located_element=LocateElementCommonClass.CommonClass().findElement(browser,new_how,old_what)
                log=ResultLog()
                log.info("需要定位的元素为:%s,元素的定位方式为:%s,定位元素所需的数据为:%s" %(locate_object.encode('utf-8'),old_how.encode('utf-8'),old_what.encode('utf-8')))
                OperateQuotePriceObject.OperateQuotePriceObject().opermateQuotePriceElement(browser,located_element,locate_object,send_data)
                # self.locateElement(browser,new_how,old_what,locate_object,send_data)
        else:
            new_first_how=locate_method_dict[old_how]
            #得到二次定位方式的值所在列
            secondLocatemethod_key=u"二次定位的方式"
            secondLocate_colNumber=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(locate_method_data_path,"objname_locatemethod_locatedata",secondLocatemethod_key)[1]
            old_second_how=locate_element_sheet.cell_value(rowNumber,secondLocate_colNumber)
            #得到二次定位所需值
            secondLocateData_key=u"二次定位所需数据"
            secondLocateData_colNumber=get_number_by_data.GetRowAndColNumber().getRowAndColNumber(locate_method_data_path,"objname_locatemethod_locatedata",secondLocateData_key)[1]
            secondLocate_what=locate_element_sheet.cell_value(rowNumber,secondLocateData_colNumber)
            new_second_how=locate_method_dict[old_second_how]
            # self.locateElmentFirst(browser,new_first_how,old_what,locate_object,send_data,new_second_how,secondLocate_what)
            log=ResultLog()
            log.info("需要定位的元素为:%s,元素的定位方式为:%s,定位元素所需的数据为:%s" %(locate_object.encode('utf-8'),old_second_how.encode('utf-8'),secondLocate_what.encode('utf-8')))
            second_located_element=LocateElementCommonClass.CommonClass().locateElementIndirectly(browser,new_first_how,old_what,new_second_how,secondLocate_what)
            # print second_located_element
            OperateQuotePriceObject.OperateQuotePriceObject().opermateQuotePriceElement(browser,second_located_element,locate_object,send_data)
示例#4
0
    def findElement(self, browser, new_how, old_what, element):
        """定位元素"""
        log = ResultLog()
        browser = browser
        how = new_how
        what = old_what
        try:
            located_element = WebDriverWait(browser, 20).until(
                lambda browser: browser.find_element(by=how, value=what))

        except Exception:
            log.info("元素:%s 定位失败" % (element.encode('utf-8')))
            print("element: %s is not located" % element)
            raise NameError("element:%s is located filed" % element)
        else:
            log.info("元素:%s 已定位成功" % (element.encode('utf-8')))
            return located_element