Exemplo n.º 1
0
def getSelData(el, Detailstr):
    """
    选择查询条件的数据项
    :param el:
    :param Detailstr:
    :return:
    """
    time.sleep(1)
    dataList = Select(el.get()).options
    for i in range(len(dataList)):
        #if dataList[i].text.strip() == Detailstr.strip():
        if Detailstr.strip() in dataList[i].text:
            #time.sleep(1)
            #value = dataList[i].get_attribute('value')
            #Select(el.get()).select_by_value(value)
            index=dataList.index(dataList[i])
            Select(el.get()).select_by_index(index)
            break
    else:
        logging.error(u'没有数据'+Detailstr+u',请确认')
        exit(u'没有此数据,请确认')
Exemplo n.º 2
0
    def SubmitApproval(self,func,el,sub):
        self.clickFunction(func,el,sub,key)
        sleep(5)
        self.bSwithcfrname(el, key)
        self.tabcheck(el)
        a = EL.get_el_list('RPdataDetail', cg.path)
        self.checkKeys(func, el, key,sub)
        el.getFunctionName(a[0])
        el.get_element('selWorkFlow')
        currentscttext = Select(el.get()).all_selected_options[0].text

        if u'请选择' in currentscttext:
            rdmod = random.randint(2, len(Select(el.get()).options) - 1)
            Select(el.get()).select_by_index(rdmod)
            logging.info(Select(el.get()).all_selected_options[0].text)
        else:
            selOption = Select(el.get()).all_selected_options
            allOptions = Select(el.get()).options
            if selOption[0] in allOptions:
                index = allOptions.index(selOption[0])
                while True:
                    rd = random.randint(1, len(allOptions) - 1)
                    if index != rd:
                        Select(el.get()).select_by_index(rd)
        el.get_element('SubmitApproval')
        el.get().click()
        func.driver.switch_to.default_content()
        sleep(2)
        #print func.driver.current_url
        txtT=func.driver.find_element_by_xpath('/html/body/div[1]/table/tbody/tr[2]/td[2]/div/table/tbody/tr[1]/td/div/div[1]').text
        if txtT==u'新增报告':
            txtT=func.driver.find_element_by_xpath('/html/body/div[1]/table/tbody/tr[2]/td[2]/div/table/tbody/tr[1]/td/div/div[1]').text
        #print txtT
        if txtT==u'从默认审批人中指定':
            func.driver.find_elements_by_xpath('//*[@id="field_status"]')[0].find_element_by_xpath('input').click()
        else:
            self.choices_Auser(func,el)
Exemplo n.º 3
0
def NewCopyDetail(self,el,args=None,ButtonKey=None,Inquiry=None):
    """
    复制新增功能
    :param self:
    :param el: Element类对象
    :param args: 参数组,
    :param ButtonKey: 操作的按钮,默认为保存
    :param Inquiry: 询价方式
    :return:
    """
    if Inquiry == None:
        commond.Duantao(self, el)
    else:
        commond.OtherXujia(self, el, Inquiry)

    commond.LinkDate(el)

    el.getFunctionName(dataCopyNew[0])
    el.get_element(dataCopyNew[1])
    el.get().click()

    self.driver.switch_to.default_content()
    el.getFunctionName(MsgFrm[0])
    el.get_element(MsgFrm[1])
    xf = el.get()
    self.driver.switch_to.frame(xf)

    el.getFunctionName(dataDetail[0])
    el.get_element('jishutuandui')

    '''
    #当前技术团队项为
    currentseltext = Select(el.get()).all_selected_options[0].text
    print currentseltext
    if u'请选择' in currentseltext:
        rd = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rd)
        #Select(el.get()).all_selected_options[0].text
    '''

    # 技术团队
    #el.get_element('jishutuandui')
    if len(Select(el.get()).options) < 2:
        el.get_element('weituoleixing')
        selOption = Select(el.get()).all_selected_options
        allOptions = Select(el.get()).options
        print allOptions

        if selOption[0] in allOptions:
            index = allOptions.index(selOption[0])
            while True:
                rd = random.randint(1, len(allOptions) - 1)
                if index != rd:
                    Select(el.get()).select_by_index(rd)
                    break
    # 当前技术团队项
    el.get_element('jishutuandui')
    currentseltext = Select(el.get()).all_selected_options[0].text
    if u'请选择' in currentseltext:
        rd = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rd)
        logging.info(u'技术团队:' + Select(el.get()).all_selected_options[0].text)


    el.get_element('shenfen')
    selProvince=Select(el.get()).all_selected_options[0].text
    if u'请选择'in selProvince:
        rdP = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rdP)
        el.get_element('chengshi')
        rdC = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rdC)
        el.get_element('xingzhengqu')
        rdX = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rdX)
        el.get_element('quyu')
        rdQ = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rdQ)

    el.get_element('chengshi')
    field_cityid=Select(el.get()).all_selected_options[0].text
    if u'请选择' in field_cityid:
        rdC = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rdC)
        el.get_element('xingzhengqu')
        rdX = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rdX)
        el.get_element('quyu')
        rdQ = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rdQ)

    el.get_element('xingzhengqu')
    field_areaid=Select(el.get()).all_selected_options[0].text
    if u'请选择' in field_areaid:
        rdX = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rdX)
        el.get_element('quyu')
        rdQ = random.randint(2, len(Select(el.get()).options) - 1)
        Select(el.get()).select_by_index(rdQ)

    #el.get_element('quyu')
    #field_subareaid=Select(el.get()).all_selected_options[0].text
    #if u'请选择' in field_subareaid:
        #rdQ = random.randint(2, len(Select(el.get()).options) - 1)
        #Select(el.get()).select_by_index(rdQ)


    firstText=commond.NewDataDetial(el,args)

    if ButtonKey not in MsgBtn or ButtonKey == None:
        ButtonKey = 'save'
    if Inquiry != None:
        time.sleep(5)# 10s fixed 3s
        el.getFunctionName(MulMsgBtn[0])
        # el.get_element(ButtonKey)
    else:
        el.getFunctionName(MsgBtn[0])
    el.get_element(ButtonKey)
    el.get().click()
    self.driver.switch_to.default_content()
    time.sleep(3)
    commond.Switchto_Frame(self,Inquiry)
    commond.SelectFirstData(self,el)

    self.driver.switch_to.default_content()
    el.getFunctionName(MsgFrm[0])
    el.get_element(MsgFrm[1])
    xf = el.get()
    self.driver.switch_to.frame(xf)

    secondText = commond.NewDataDetial(el, args)

    if firstText[0]==''or firstText[0]==None:
        firstTXT=u'未填写'
    else:
        firstTXT=firstText[0]

    if secondText[0]==None or secondText[0]=='':
        secondTXT=u'未填写'
    else:
        secondTXT=secondText[0]

    #logging.info(firstText[1]+u' 复制前:'+firstTXT+u'-- 复制后:'+secondTXT)
    if firstText[0]==secondText[0]:
        return True
    else:
        return False
Exemplo n.º 4
0
    def parse(self, response):
        self.driver.get(response.url)
        select = Select(
            self.driver.find_element_by_xpath('//*[@id="selectedSubjects"]'))
        num_options = len(select.options)
        json_data = []

        # Iterate over each subject listed in the combobox
        for i in range(num_options - 1):
            self.driver.get(response.url)

            # Wait for subjects appear in options box, then click
            WebDriverWait(self.driver, 10).until(
                EC.presence_of_element_located(
                    (By.XPATH, '//*[@id="selectedSubjects"]')))
            Select(
                self.driver.find_element_by_xpath(
                    '//*[@id="selectedSubjects"]')).select_by_index(i)

            subject_selection = Select(
                self.driver.find_element_by_xpath(
                    '//*[@id="selectedSubjects"]')).options[i].text
            course_subject_long = subject_selection[(
                subject_selection.index('-') + 2):]
            course_subject = subject_selection[:(subject_selection.index('-') -
                                                 1)]

            # Hit submit to get courses for that subject
            self.driver.find_element_by_xpath(
                '//*[@id="socFacSubmit"]').click()

            # Try to get the number of pages for this subject
            try:
                total_page_number = scrapy.Selector(
                    text=unicode(self.driver.page_source)
                ).xpath(
                    '//*[@id="socDisplayCVO"]/div[2]/table/tbody/tr/td[3]/text()[1]'
                ).extract_first(default='f 0)')
                total_page_number = int(
                    total_page_number[(total_page_number.index('f') +
                                       2):total_page_number.index(')')])
            except:
                total_page_number = 0

            # Iterate over each page in for the results of this subject
            for j in range(1, total_page_number + 1):
                self.driver.get(
                    'https://act.ucsd.edu/scheduleOfClasses/scheduleOfClassesStudentResult.htm?page='
                    + str(j))

                result_selector = scrapy.Selector(
                    text=self.driver.page_source.encode('utf-8'))
                course_selectors = result_selector.xpath(
                    '//*[@id="socDisplayCVO"]/table/tbody/tr/td[3]/a/span')

                # Iterate over each course selector. Its neighbor element will give the professor name (cant get any
                # other way)
                for selector in course_selectors:
                    course_title = unicode(
                        selector.xpath('.//text()').extract_first(default=''))

                    if '  ' in course_title:
                        course_title = course_title[:course_title.index('  ')]

                    course_number = unicode(
                        selector.xpath(
                            './/ancestor::td[1]/preceding-sibling::td[1]/text()'
                        ).extract_first(''))
                    professor_name = selector.xpath(
                        './/ancestor::tr[1]//following-sibling::tr[1]/td/a/text()'
                    ).extract_first(default=None)

                    # Get non-linked version of name... TODO: not working
                    if not professor_name:
                        professor_name = selector.xpath(
                            './/ancestor::tr[1]//following-sibling::tr[1]/td/text()'
                        ).extract_first(default=None)
                        if not re.search('[a-zA-z]', professor_name):
                            professor_name = ''

                    professor_name = unicode(professor_name)
                    professor_name = (
                        professor_name[:professor_name.index('  ')]
                        if professor_name else '')
                    json_data.append({
                        "courseSubject": course_subject,
                        "courseSubjectLong": course_subject_long,
                        "courseName": course_title,
                        "courseNumber": course_number,
                        "professorName": professor_name
                    })

        self.data.write(unicode(json.dumps(json_data, indent=4)))
Exemplo n.º 5
0
def Query(self,el,msgmode=None,data=None,submode=None,Inquiry=None,substate=None):
    """

    :param self:
    :param el:
    :param msgmode:
    :param data:
    :param submode:
    :param Inquiry:
    :param substate:
    :return:
    """

    if Inquiry == None:
        commond.Duantao(self,el,submode,substate)
    else:
        commond.OtherXujia(self,el,Inquiry,substate)
    el.getFunctionName(query[0])
    if Inquiry!='Gaizhang':
        if substate!='daishenpi'and substate!='yishenpi':
            el.get_element('moreConditions')
            el.get().click()
    elementList = []
    resultText=''
    if data==u'默认':
        data=msgmode
    logging.info(u'查询关键字为:%s'%msgmode)
    if msgmode==u'省份':
        if data==None:
            pass
        else:
            for i in [u'直辖市',u'省',u'特区',u'自治区']:
                if i in data:
                    if u'直辖市' in data or u'特区' in data:
                        if u'直辖市' in data:
                            provinceKey=u'直辖市'
                            city = data.split(provinceKey)[0] + u'市'
                        else:
                            provinceKey=u'特区'
                            city = data.split(provinceKey)[0]
                        dataprList=data.split(provinceKey)
                        provincetext=data.split(provinceKey)[0]+provinceKey
                        el.get_element('province')

                        provinceList=Select(el.get()).options
                        for i in range(len(provinceList)):
                            if provinceList[i].text.strip()==provincetext:
                                value=provinceList[i].get_attribute('value')
                                Select(el.get()).select_by_value(value)
                                #index=provinceList.index(provinceList[i])
                                #Select(el.get()).select_by_index(index)
                                #time.sleep(5)
                                break

                        el.get_element('city')
                        cityList=Select(el.get()).options
                        for i in range(len(cityList)):
                            if cityList[i].text.strip()==city:
                                index=cityList.index(cityList[i])
                                Select(el.get()).select_by_index(index)
                                break

                        if len(dataprList)>=2:
                            area=data.split(provinceKey)[1]
                            el.get_element('area')

                            areaList=Select(el.get()).options
                            for i in range(len(areaList)):
                                if areaList[i].text.strip()==area:
                                    index=areaList.index(areaList[i])
                                    Select(el.get()).select_by_index(index)
                                    break

                    else:
                        if u'省' in data:
                            provinceKey=u'省'
                        elif u'自治区' in data:
                            provinceKey =u'自治区'
                        else:
                            logging.error(u'数据格式不正确,请确认')
                            exit(u'数据格式不正确,请确认')
                        dataprList = data.split(provinceKey)

                        provincetext = dataprList[0] + provinceKey
                        el.get_element('province')
                        getSelData(el, provincetext)

                        el.get_element('city')
                        if dataprList[1]!='':
                            if u'市' in dataprList[1]:
                                cityKey=u'市'
                            elif u'县' in dataprList[1]:
                                cityKey=u'地区'
                            elif u'州' in dataprList[1]:
                                cityKey =u'自治州'
                            elif u'盟' in dataprList[1]:
                                cityKey=u'盟'

                            cityList = dataprList[1].split(cityKey,1)
                            city = cityList[0]+ cityKey
                            #el.get_element('city')
                            getSelData(el, city)

                            if cityList[1]!='':
                                area=cityList[1]
                                el.get_element('area')
                                getSelData(el, area)
                                time.sleep(5)
                            else:
                                area=''
                        else:
                            city=''
                            resultText=[]
                            cityOptions=Select(el.get()).options
                            for i in cityOptions:
                                #print i.text
                                resultText.append(i.text)

                    break
            else:
                logging.info(u'请检查数据格式')
                exit(u'请检查数据格式')
            if city=='':
                pass
                #resultText=''#待解决
            elif area=='':
                resultText=city
            else:
                resultText=city+'['+area+']'
    elif msgmode==u'分支机构':
        if data!=None:
            elementList.append('fenzhijigou')
            dataList=data.split()
            company=dataList[0]
            el.get_element('company')
            getSelData(el, company)

            if len(dataList)>1:
                elementList.append('yewuyuansuoshubumen')
                department=dataList[1]
                el.get_element('department')
                getSelData(el, department)
    elif msgmode==u'委估对象类型':
        elementList.append('xunjialeixing')
        el.get_element('valuationTypeMode')
        getSelData(el, data)
    elif msgmode==u'来源':
        if data==u'默认':
            data=msgmode
        el.get_element('source')
        getSelData(el, data)
    elif msgmode==u'委托客户' or msgmode==u'客户单位':
        dataList=data.split()
        entrustCorrespondent=dataList[0]
        el.get_element('entrustCorrespondent')
        getSelData(el, entrustCorrespondent)
        if len(dataList)>1:
            bankBranch=dataList[1]
            el.get_element('bankBranch')
            getSelData(el, bankBranch)
            time.sleep(1)
        if len(dataList)>2:
            bankSubbranch=dataList[2]
            el.get_element('bankSubbranch')
            getSelData(el, bankSubbranch)
    elif msgmode==u'状态':
        el.get_element('state')
        getSelData(el, data)
    elif msgmode==u'估价师':
        #因为功能涉及流程比较复杂暂不开发
        pass
    elif msgmode==u'查勘状态':
        surveystate=data
        xpath='td[15]/div'
        el.get_element('surveystate')
        getSelData(el, surveystate)
    elif msgmode==u'询价时间'or msgmode==u'申请时间' or msgmode==u'盖章时间':
        strdata=str(data)
        if '-' in strdata:
            dataList = strdata.split(':')
            begintime = dataList[0]
        else:
            dataList=[]
            begintime=''
        el.get_element('beginData')
        #self.driver.execute_script(
            #"var setDate=document.getElementById(\""+el.path+"\");setDate.removeAttribute('readonly');")
        #print el.path
        self.driver.execute_script(
           "var setDate=document.getElementById(\"" + el.path + "\");setDate.removeAttribute('readonly');")
        self.driver.execute_script("var setDate=function $(id){ return document.getElementById(id); };setDate(\""+el.path+"\").removeAttribute('readonly');")
        if Inquiry!='Gaizhang':
            el.get().clear()
        if begintime!='':
            #print begintime
            el.get().send_keys(begintime)
        el.get_element('endData')
        self.driver.execute_script(
            "var setDate=document.getElementById(\""+el.path+"\");setDate.removeAttribute('readonly');")
        if Inquiry!='Gaizhang':
            el.get().clear()
        if len(dataList)>1:
            endtime=dataList[1]
            el.get().send_keys(endtime)
    elif msgmode==u'面积':
        strdata=str(data)
        dataList=strdata.split('-')
        minArea=dataList[0]
        if minArea!='':
            el.get_element('minArea')
            el.get().clear()
            el.get().send_keys(minArea)
        if len(dataList)>1:
            maxArea=dataList[1]
            el.get_element('maxArea')
            el.get().click()
            el.get().send_keys(maxArea)
    elif msgmode==u'关键字查询':
        el.get_element('fuzzyQuery')
        el.get().clear()
        if type(data)==float:
            data=str(data)
        if data==None:
            pass
        else:
            el.get().send_keys(data)
    elif msgmode==u'提交时间':
        if type(data)==float:
            data=str(data)
        dataList = data.split(':')

        begintime = dataList[0]
        time.sleep(1)
        el.get_element('submitBeginData')

        # Chrome浏览器无法执行下面的代码与js
        #self.driver.find_element_by_xpath('//*[@id="txtQueryBeginDate"]')
        self.driver.execute_script("var setDate=document.getElementById(\"" + el.path + "\");setDate.removeAttribute('readonly');")
        el.get().clear()
        if begintime != '':
            el.get().send_keys(begintime)

        el.get_element('submitEndData')
        self.driver.execute_script("var setDate=document.getElementById(\"" + el.path + "\");setDate.removeAttribute('readonly');")

        el.get().clear()
        if len(dataList) > 1:
            endtime = dataList[1]
            el.get().send_keys(endtime)
    elif msgmode==u'询价单类型':
        elementList.append('xujiadanleixing')
        el.get_element('xujiadanleixing')
        getSelData(el, data)
    elif msgmode==u'物业类型':
        elementList.append('wuyeleixing')
        el.get_element('wuyeleixing')
        getSelData(el, data)
    elif msgmode==u'用户类型':
        if data==u'默认':
            data=msgmode
        el.get_element('UserType')
        getSelData(el, data)
    else:
        logging.error(u'请检查询的字段是否正确!')
        exit(u'请检查询的字段是否正确')
    time.sleep(2)
    el.get_element('queryKey')
    el.get().click()
    time.sleep(1)
    if msgmode == u'省份':
        xpath = u'td[13]/div'
        result=getAssignData(el, resultText, xpath)
        return result
    elif msgmode==u'分支机构':
        el.getFunctionName(elData[0])
        el.get_element('checkbox')
        el.getDriver().implicitly_wait(1)
        try:
            # for i in range(len(el.gets())):
            logging.info(u'共'+str(len(el.gets()))+u'条数据')
            rd = random.randint(0, len(el.gets()) - 1)
        except:
            el.get_element('tabNotice')
            logging.info(el.get().text)
            return True

        logging.info(u'第' + str(rd + 1) + u'条数据')
        if substate=='yishenpi'or substate=='daishenpi':
            #dId=el.gets()[rd].find_element_by_xpath('td[2]/div').text
            dId=u'列表没有询价编号一列'
        else:
            dId = el.gets()[rd].find_element_by_xpath('td[3]/div').text
        #dLink = el.gets()[rd].find_element_by_xpath('td[7]/div').text
        logging.info(u'询价编号:' + dId)
        time.sleep(1)
        # if substate!=None:
        #     # if 'shenpi' in substate:
        #     #     #el.gets()[rd].find_element_by_xpath('td[3]/div').click()
        #     # else:
        #     ActionChains(self.driver).double_click(el.gets()[rd].find_element_by_xpath('td[3]/div')).perform()
        # else:
        #     ActionChains(self.driver).double_click(el.gets()[rd].find_element_by_xpath('td[3]/div')).perform()
        ActionChains(self.driver).double_click(el.gets()[rd].find_element_by_xpath('td[3]/div')).perform()
        result = getDetail(self, el, data, query, elementList)
        return result
    elif msgmode==u'来源':
        if Inquiry=='Zidongxujia':
            xpath=u'td[1]/div/img'
        else:
            xpath = u'td[2]/div/img'
        result=getAssignData(el, data, xpath,Inquiry)
        return result
    elif msgmode==u'委估对象类型' :
        el.getFunctionName(elData[0])
        el.get_element(elData[1])
        # for i in range(len(el.gets())):
        time.sleep(1)
        el.getDriver().implicitly_wait(1)
        try:
            lnGets=len(el.gets())-1
        except:
            el.get_element('tabNotice')
            logging.info(el.get().text)
            return True
        rd = random.randint(0,lnGets)
        logging.info(u'第'+str(rd+1)+u'条')
        dId = el.gets()[rd].find_element_by_xpath('td[3]/div').text
        dLink = el.gets()[rd].find_element_by_xpath('td[7]/div').text
        logging.info(u'询价编号:' + dId)
        ActionChains(self.driver).double_click(el.gets()[rd].find_element_by_xpath('td[3]/div')).perform()
        result = getDetail(self, el, data, query, elementList)
        return result
    elif msgmode==u'委托客户'or msgmode==u'客户单位':
        valuationText = ''.join(data)
        #print valuationText
        if Inquiry=='Duotao':
            xpath = 'td[13]/div'
        elif Inquiry=='Zidongxujia':
            xpath='td[2]/div'
        else:
            xpath='td[9]/div'
        result=getAssignData(el, valuationText, xpath)
        #print result
        return result
    elif msgmode==u'状态':
        elementList.append('xunjiazhuantai')
        el.getFunctionName(elData[0])
        el.get_element(elData[1])
        time.sleep(1)
        el.getDriver().implicitly_wait(1)
        try:
            lnGets=len(el.gets()) - 1
        except:
            el.get_element('tabNotice')
            logging.info(el.get().text)
            return True
        rd = random.randint(0, lnGets)
        logging.info(u'第' + str(rd + 1) + u'条')
        dId = el.gets()[rd].find_element_by_xpath('td[3]/div').text
        dLink = el.gets()[rd].find_element_by_xpath('td[7]/div').text
        logging.info(u'询价编号:' + dId)
        ActionChains(self.driver).double_click(el.gets()[rd].find_element_by_xpath('td[3]/div')).perform()
        result = getDetail(self, el, data, query, elementList)
        return result
    elif msgmode==u'查勘状态':
        result=getAssignData(el, data,xmlpath)
        return result
    elif msgmode==u'询价时间'or msgmode==u'申请时间'or msgmode==u'盖章时间':
        if Inquiry=='Zidongxujia':
            xpath='td[17]/div'
        elif Inquiry=='Gaizhang':
            xpath='td[11]/div'
        elif Inquiry=='Duotao':
            #xpath='td[22]/div'#这是估价时间,不是询价时间
            elementList.append('chuangjianshijian')
            el.getFunctionName(elData[0])
            el.get_element('checkbox')
            el.getDriver().implicitly_wait(1)
            if data == u'清空':
                if len(el.gets()) > 0:
                    return True
                else:
                    try:
                        el.getDriver().implicitly_wait(1)
                        el.get_element('tabNotice')
                        logging.info(el.get().text)
                        return True
                    except:
                        logging.error(u'出错!')
                        return False
            try:
                # for i in range(len(el.gets())):
                rd = random.randint(0, len(el.gets())-1)
            except:
                el.get_element('tabNotice')
                logging.info(el.get().text)
                return True

            logging.info(u'第' + str(rd + 1) + u'条数据')
            if substate == 'yishenpi' or substate == 'daishenpi':
                # dId=el.gets()[rd].find_element_by_xpath('td[2]/div').text
                dId = u'列表未询价编号'
            else:
                dId = el.gets()[rd].find_element_by_xpath('td[3]/div').text
            # dLink = el.gets()[rd].find_element_by_xpath('td[7]/div').text
            logging.info(u'询价编号:' + dId)
            time.sleep(1)
            ActionChains(self.driver).double_click(el.gets()[rd].find_element_by_xpath('td[3]/div')).perform()
            result = getDetail(self, el, dataList, query, elementList)
            return result
        else:
            if substate=='Zhuzai':
                xpath = 'td[30]/div'
            else:
                xpath= 'td[27]/div'
        result=getAssignData(el, dataList, xpath)
        return result

        #以下代码查询其中一条数据,并进入详细界面,获取创建时间
        '''
        elementList.append('chuangjianshijian')
        el.getFunctionName(elData[0])
        el.get_element('checkbox')
        el.getDriver().implicitly_wait(1)
        if data == u'清空':
            if len(el.gets())>0:
                return True
            else:
                try:
                    el.getDriver().implicitly_wait(1)
                    el.get_element('tabNotice')
                    logging.info(el.get().text)
                    return True
                except:
                    logging.error(u'出错!')
                    return False
        try:
            # for i in range(len(el.gets())):
            rd = random.randint(0, len(el.gets()) - 1)
        except:
            el.get_element('tabNotice')
            logging.info(el.get().text)
            return True

        logging.info(u'第' + str(rd + 1) + u'条数据')
        if substate == 'yishenpi' or substate == 'daishenpi':
            # dId=el.gets()[rd].find_element_by_xpath('td[2]/div').text
            dId = u'列表未询价编号'
        else:
            dId = el.gets()[rd].find_element_by_xpath('td[3]/div').text
        # dLink = el.gets()[rd].find_element_by_xpath('td[7]/div').text
        logging.info(u'询价编号:' + dId)
        time.sleep(1)
        ActionChains(self.driver).double_click(el.gets()[rd].find_element_by_xpath('td[3]/div')).perform()
        result = getDetail(self, el, dataList, query, elementList)
        return result
        '''
    elif msgmode==u'面积':
        if Inquiry=='Zidongxujia':
            xpath='td[6]/div'
        elif Inquiry=="Duotao":
            xpath = 'td[16]/div'
        else:
            xpath='td[17]/div'
        result=getAssignData(el, dataList, xpath)
        return result
    elif msgmode==u'关键字查询':
        result=showAllData(el,data)
        return result
    elif msgmode==u'提交时间':
        xpath = 'td[9]/div'
        result = getAssignData(el, dataList, xpath)
        return result
    elif msgmode == u'询价单类型':
        if data==u'询价单类型':
            data=[u'自动询价',u'人工询价']
        xpath='td[2]/div'
        result=getAssignData(el,data,xpath)
        return result
    elif msgmode==u'物业类型':
        xpath = 'td[5]/div'
        if data==u'物业类型':
            data=[u'住宅',u'办公',u'商业',u'工业',u'土地',u'资产',u'其他']

        result = getAssignData(el, data, xpath)
        return result
    elif msgmode==u'用户类型':
        #xpath = u'td[2]/div'
        result = showAllData(el, data)
        return result
    else:
        logging.error(u'请检查询的字段是否正确!')
        exit(u'请检查询的字段是否正确')
Exemplo n.º 6
0
def WritePreviews(self,el,msgElement=None,data=None,link=None,submode=None,Inquiry=None):
    if Inquiry == None:
        commond.Duantao(self, el, submode)
        dataId=JudgeTOBData(el,link)
        #commond.switchToDetailUI(self, el)
        el.getFunctionName(ExamineModif[0])
        el.get_element('writePreviews')
        el.get().click()
        time.sleep(1)

        self.driver.switch_to.default_content()
        el.get_element('transferOfBusinessiframe')
        self.driver.switch_to.frame(el.get())


        el.getFunctionName(ExamineModif[0])
        # 查看是否Tab显示
        el.get_element('pReevaluateTab')
        tabatb = el.get().get_attribute('class')
        logging.info(u'查看是否为Tab方式')
        if 'chked' in tabatb:
            el.get_element('tabchkbox')
            el.get().click()
        time.sleep(1)
        if msgElement!='jishutuandui':
            # 技术团队
            el.get_element('jishutuandui')
            if len(Select(el.get()).options) < 2:
                el.get_element('weituoleixing')
                selOption = Select(el.get()).all_selected_options
                allOptions = Select(el.get()).options
                if selOption[0] in allOptions:
                    index = allOptions.index(selOption[0])
                    while True:
                        rd = random.randint(1, len(allOptions) - 1)
                        if index != rd:
                            Select(el.get()).select_by_index(rd)
                            break
                time.sleep(1)
                el.get_element('jishutuandui')
            currentseltext = Select(el.get()).all_selected_options[0].text
            if u'请选择' in currentseltext:
                rd = random.randint(1, len(Select(el.get()).options) - 1)
                Select(el.get()).select_by_index(rd)
                logging.info(u'技术团队:' + Select(el.get()).all_selected_options[0].text)

        if msgElement!='yewubumen':
            ##业务部门
            el.get_element('yewubumen')
            currentseltext = Select(el.get()).all_selected_options[0].text
            if u'请选择' in currentseltext:
                rd = random.randint(1, len(Select(el.get()).options) - 1)
                Select(el.get()).select_by_index(rd)
                logging.info(u'业务部门:' + Select(el.get()).all_selected_options[0].text)

        if msgElement!='baogaoleixing':
            ##报告类型
            el.get_element('baogaoleixing')
            currentseltext = Select(el.get()).all_selected_options[0].text
            if u'请选择' in currentseltext:
                rd = random.randint(1, len(Select(el.get()).options) - 1)
                Select(el.get()).select_by_index(rd)
                logging.info(u'报告类型:' + Select(el.get()).all_selected_options[0].text)
        #time.sleep(5)

        #if msgElement !=None:
            #.get_element(msgElement)

        if msgElement != None:
                currenttext=''
                el.get_element(msgElement)
                dictFunction = EL.get_el_dict(ExamineModif[0], msgElement, xmlpath)
                try:
                    el.get().get_attribute('tagname')
                except:
                    raise (u'未找元素,请确认')
                if 'elementType' in dictFunction:
                    if dictFunction['elementType'] == 'select':
                        currentscttext = Select(el.get()).all_selected_options[0].text
                        if data == None:
                            if u'请选择' in currentscttext:
                                rdmod = random.randint(2, len(Select(el.get()).options) - 1)
                                Select(el.get()).select_by_index(rdmod)
                                logging.info(Select(el.get()).all_selected_options[0].text)
                            else:
                                selOption = Select(el.get()).all_selected_options
                                allOptions = Select(el.get()).options
                                if selOption[0] in allOptions:
                                    index = allOptions.index(selOption[0])
                                    while True:
                                        rd = random.randint(1, len(allOptions) - 1)
                                        if index != rd:
                                            Select(el.get()).select_by_index(rd)
                        elif data in currentscttext and  u'请选择' not in currentscttext:
                            pass
                        else:
                            allOptions = Select(el.get()).options
                            for selem in allOptions:
                                if data == selem.text:
                                    index = allOptions.index(selem)
                                    Select(el.get()).select_by_index(index)
                                    break
                            else:
                                logging.info(u'选项中没有输入的项,请确认!')
                                exit(u'选项中没有输入的项,请确认!')
                        currenttext=Select(el.get()).all_selected_options[0].text

                    elif dictFunction['elementType'] == 'input' or dictFunction['elementType'] == 'textarea':
                        el.get().clear()
                        el.get().send_keys(data)
                        currenttext = el.get().get_attribute('value')
                    else:
                        el.get().clear()
                        el.get().send_keys(data)
                        currenttext = el.get().text
                logging.info(u'输入:'+currenttext)
        time.sleep(1)
        el.get_element('pReevaluateSave')
        el.get().click()

        self.driver.switch_to.default_content()
        time.sleep(1)
        el.get_element('pReevaluateOk')
        el.get().click()
        '''
        el.get_element('sureOK')
        el.get().click()
        '''
        linkText=modification_lookData(self,el,dataId,Inquiry)
        if linkText==u'撰写预评中':
            return True
        #commond.switchToDetailUI(self,el)
        #newtext=commond.GetDetail(self,el,ExamineModif,msgElement)
        #return data==newtext

    else:
        commond.OtherXujia(self, el, Inquiry)
Exemplo n.º 7
0
def ModificationData(self,el,msgmode=None,data=None,link=None,submode=None,button=None,Inquiry=None):
    """
    修改数据验证
    :param self:
    :param el:
    :param msgmode:元素在xml的名称
    :param data: 输入数据
    :param link: 环节
    :param submode: 单套询价类型
    :param button: 按钮
    :param Inquiry: 询价类型
    :return:
    """
    if Inquiry == None:
        commond.Duantao(self, el, submode)
        # commond.Switchto_Frame(self, Inquiry)
        # currentuser = commond.sessionName
        # valuer = commond.Valuer
        dataId=ModificationClickLinkData(el,link=link)
        commond.switchToDetailUI(self, el)

        '''
        if button == 'writePreviews':
            el.getFunctionName(ExamineModif[0])
            el.get_element(msgmode)
            el.get().click()
        '''


        addnew.checkTab(el)#查看是否Tab显示
        el.getFunctionName(ExamineModif[0])
        el.get_element(msgmode)
        commond.GetDetail(self, el, ExamineModif, msgmode)
        if msgmode != None:
                currenttext=''
                el.get_element(msgmode)
                dictFunction = EL.get_el_dict(ExamineModif[0], msgmode, xmlpath)
                try:
                    el.get().get_attribute('tagname')
                except:
                    raise (u'未找元素,请确认')
                if 'elementType' in dictFunction:
                    if dictFunction['elementType'] == 'select':
                        currentscttext = Select(el.get()).all_selected_options[0].text
                        # logging.info(currenttext)
                        if data == None:
                            if u'请选择' in currentscttext:
                                rdmod = random.randint(2, len(Select(el.get()).options) - 1)
                                Select(el.get()).select_by_index(rdmod)
                                logging.info(Select(el.get()).all_selected_options[0].text)
                            else:
                                selOption = Select(el.get()).all_selected_options
                                allOptions = Select(el.get()).options
                                if selOption[0] in allOptions:
                                    index = allOptions.index(selOption[0])
                                    while True:
                                        rd = random.randint(1, len(allOptions) - 1)
                                        if index != rd:
                                            Select(el.get()).select_by_index(rd)
                        elif data in currentscttext and  u'请选择' not in currentscttext:
                            pass
                        else:
                            allOptions = Select(el.get()).options
                            for selem in allOptions:
                                if data == selem.text:
                                    index = allOptions.index(selem)
                                    Select(el.get()).select_by_index(index)
                                    break
                            else:
                                logging.info(u'选项中没有输入的项,请确认!')
                                exit(u'选项中没有输入的项,请确认!')
                        currenttext=Select(el.get()).all_selected_options[0].text

                    elif dictFunction['elementType'] == 'input' or dictFunction['elementType'] == 'textarea':
                        el.get().clear()
                        el.get().send_keys(data)
                        currenttext = el.get().get_attribute('value')
                    else:
                        el.get().clear()
                        el.get().send_keys(data)
                        currenttext = el.get().text
                logging.info(u'输入:'+currenttext)

        el.getFunctionName(MsgBtn[0])
        el.get_element('save')
        el.get().click()
        self.driver.switch_to.default_content()
        time.sleep(1)
        '''
        el.get_element('close')
        el.get().click()
        '''
        modification_lookData(self,el,dataId,Inquiry)
        commond.switchToDetailUI(self,el)
        newtext=commond.GetDetail(self, el, ExamineModif, msgmode)
        return data==newtext

    else:
        commond.OtherXujia(self, el, Inquiry)
Exemplo n.º 8
0
    def reportadd(self,func,el,sub,button=None,**args):
        oldIDlist=self.clickFunction(func,el,sub,key)
        sleep(3)
        self.bSwithcfrname(el,key)
        self.tabcheck(el)
        RPdataDetail = EL.get_el_list('RPdataDetail', cg.path)
        currenttxtList=[]
        self.checkKeys(func, el, key,sub)

        #通过字典类型来判断数据类型,通过字典的值来填写数据
        if  u'委托客户' in args.keys():
            if u'委托客户分行' in args.keys() and len(args.keys())>=3:
                wtkh=[u'委托客户',u'委托客户分行',u'委托客户支行']
            else:
                wtkh=args.keys()
            for i in wtkh:
                for j in range(1, len(RPdataDetail)):
                    RPdataDetaildict = EL.get_el_dict(RPdataDetail[0], RPdataDetail[j], cg.path)
                    if RPdataDetaildict.get('name').strip() == i.strip():
                        el.getFunctionName(RPdataDetail[0])
                        el.get_element(RPdataDetail[j])
                        currentscttext = Select(el.get()).all_selected_options[0].text
                        if args[i] == None:
                            if u'请选择' in currentscttext:
                                rdmod = random.randint(1, len(Select(el.get()).options) - 1)
                                Select(el.get()).select_by_index(rdmod)
                                logging.info(Select(el.get()).all_selected_options[0].text)
                            else:
                                selOption = Select(el.get()).all_selected_options
                                allOptions = Select(el.get()).options

                                if selOption[0] in allOptions:
                                    index = allOptions.index(selOption[0])
                                    while True:
                                        rd = random.randint(1, len(allOptions) - 1)
                                        if index != rd:
                                            Select(el.get()).select_by_index(rd)
                        elif args[i] in currentscttext and u'请选择' not in currentscttext:
                            pass
                        else:
                            allOptions = Select(el.get()).options
                            for selem in allOptions:
                                if args[i].strip() == selem.text.strip():
                                    index = allOptions.index(selem)
                                    Select(el.get()).select_by_index(index)
                                    sleep(1)
                                    break
                            else:
                                logging.error(u'未找到此选项:' + args[i])
                                exit(u'未找到此选项:' + args[i])
                        currenttxtList.append(args[i])
                        break
                else:
                    logging.error(u'not found:' + i)
                    currenttxtList.append('false')
        else:
            for i in args.keys():
                if i.strip() == u'评估方法':
                    if type(args[i]) == list:
                        pass
                    else:
                        if args[i]==u'比较法':
                            if func.driver.find_element_by_xpath('//*[@id="field_valuationmethods"]/input[1]').get_attribute('checked')!='true':
                                func.driver.find_element_by_xpath('//*[@id="field_valuationmethods"]/input[1]').click()
                            currenttxtList.append(u'比较法')
                        elif args[i]==u'收益法':
                            if func.driver.find_element_by_xpath(
                                    '//*[@id="field_valuationmethods"]/input[2]').get_attribute('checked') != 'true':
                                func.driver.find_element_by_xpath('//*[@id="field_valuationmethods"]/input[2]').click()
                            currenttxtList.append(u'收益法')
                        elif args[i]==u'成本法':
                            if func.driver.find_element_by_xpath(
                                    '//*[@id="field_valuationmethods"]/input[3]').get_attribute('checked') != 'true':
                                func.driver.find_element_by_xpath('//*[@id="field_valuationmethods"]/input[3]').click()
                            currenttxtList.append(u'成本法')
                        elif args[i]==u'假设开发法':
                            if func.driver.find_element_by_xpath(
                                    '//*[@id="field_valuationmethods"]/input[4]').get_attribute('checked') != 'true':
                                func.driver.find_element_by_xpath('//*[@id="field_valuationmethods"]/input[4]').click()
                            currenttxtList.append(u'假设开发法')
                        elif args[i]==u'基准地价修正法':
                            if func.driver.find_element_by_xpath(
                                    '//*[@id="field_valuationmethods"]/input[5]').get_attribute('checked') != 'true':
                                func.driver.find_element_by_xpath('//*[@id="field_valuationmethods"]/input[5]').click()
                            currenttxtList.append(u'基准地价修正法')
                        elif args[i]==u'路线价法':
                            if func.driver.find_element_by_xpath(
                                    '//*[@id="field_valuationmethods"]/input[6]').get_attribute('checked') != 'true':
                                func.driver.find_element_by_xpath('//*[@id="field_valuationmethods"]/input[6]').click()
                            currenttxtList.append(u'路线价法')
                        elif args[i]==u'长期趋势法':
                            if func.driver.find_element_by_xpath(
                                    '//*[@id="field_valuationmethods"]/input[7]').get_attribute('checked') != 'true':
                                func.driver.find_element_by_xpath('//*[@id="field_valuationmethods"]/input[7]').click()
                            currenttxtList.append(u'长期趋势法')
                else:
                    for j in range(1, len(RPdataDetail)):
                        RPdataDetaildict=EL.get_el_dict(RPdataDetail[0], RPdataDetail[j], cg.path)
                        if  RPdataDetaildict.get('name').strip()==i.strip():
                            el.getFunctionName(RPdataDetail[0])
                            el.get_element(RPdataDetail[j])
                            if RPdataDetaildict.get('elementType')== 'select':
                                try:
                                    currentscttext = Select(el.get()).all_selected_options[0].text
                                except:
                                    logging.error(u'请确实是否有此字段')
                                    exit(u'请确实是否有此字段')
                                if args[i] == None or args[i]=='None':
                                    if u'请选择' in currentscttext:
                                        rdmod = random.randint(1, len(Select(el.get()).options) - 1)
                                        Select(el.get()).select_by_index(rdmod)
                                        logging.info(Select(el.get()).all_selected_options[0].text)
                                    else:
                                        selOption = Select(el.get()).all_selected_options
                                        allOptions = Select(el.get()).options
                                        if selOption[0] in allOptions:
                                            index = allOptions.index(selOption[0])
                                            while True:
                                                rd = random.randint(1, len(allOptions) - 1)
                                                if index != rd:
                                                    Select(el.get()).select_by_index(rd)
                                elif args[i] in currentscttext and u'请选择' not in currentscttext:
                                    pass
                                else:
                                    allOptions = Select(el.get()).options
                                    for selem in allOptions:
                                        if args[i].strip() == selem.text.strip():
                                            index = allOptions.index(selem)
                                            Select(el.get()).select_by_index(index)
                                            break
                                    else:
                                        logging.error(u'未找到此选项:' + args[i])
                                        exit(u'未找到此选项:' + args[i])
                                currenttxtList.append(args[i])


                                #currenttxtList.append(Select(el.get()).all_selected_options[0].text)
                            elif RPdataDetaildict.get('elementType')== 'input' or RPdataDetaildict.get('elementType')== 'textarea':
                                el.get().clear()
                                el.get().send_keys(args[i])
                                currenttxtList.append(args[i])

                                #currenttxtList.append(el.get().get_attribute('value'))
                            elif RPdataDetaildict.get('elementType')== 'button':
                                el.get().click()
                                if i==u'查勘员':
                                    self.choices_Auser(func, el, 'tan1')

                                    try:
                                        xf=func.driver.find_element_by_xpath('/html/body/div[2]/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/iframe')
                                    except:
                                        xf = func.driver.find_element_by_xpath('/html/body/div[1]/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/iframe')
                                    func.driver.switch_to.frame(xf)

                                else:
                                    if i==u'报告撰写辅助人':
                                        self.choices_Auser(func, el, 'tan1')
                                    elif i==u'归档资料负责人':
                                        self.choices_Auser(func, el, 'tan1')
                                    else:
                                        self.choices_Auser(func,el,'tan1')
                                    self.bSwithcfrname(el, key)
                                el.getFunctionName(RPdataDetail[0])
                                el.get_element(RPdataDetail[j])
                                currenttxtList.append(args[i])
                            elif RPdataDetaildict.get('elementType') == 'checkbox':
                                el.get().click()
                                currenttxtList.append(args[i])
                            elif RPdataDetaildict.get('elementType')== 'readonly':
                                func.driver.execute_script("var setDate=function $(id){ return document.getElementById(id); };setDate(\"" + RPdataDetaildict.get('path') + "\").removeAttribute('readonly');")
                                el.get().clear()
                                el.get().send_keys(args[i])
                                currenttxtList.append(el.get().text)
                            else:
                                el.get().clear()
                                el.get().send_keys(args[i])
                                currenttxtList.append( el.get().text)
                            logging.info(i+':'+args[i])
                            if i == u'分支机构':
                                # 技术团队
                                el.get_element('technicalteam')
                                rd = random.randint(1, len(Select(el.get()).options) - 1)
                                Select(el.get()).select_by_index(rd)
                                logging.info(u'技术团队:' + Select(el.get()).all_selected_options[0].text)
                                #业务部门
                                el.get_element('department')
                                rd = random.randint(1, len(Select(el.get()).options) - 1)
                                Select(el.get()).select_by_index(rd)
                                logging.info(u'业务部门:' + Select(el.get()).all_selected_options[0].text)
                            elif i == u'委托类型':
                                # 技术团队
                                el.get_element('technicalteam')
                                rd = random.randint(1, len(Select(el.get()).options) - 1)
                                Select(el.get()).select_by_index(rd)
                                logging.info(u'技术团队:' + Select(el.get()).all_selected_options[0].text)

                            break
                    else:
                        logging.error(u'not found,'+i)
                        currenttxtList.append('false')
                    '''
                    elif i.strip() == u'评估方法':
                        el.getFunctionName(RPdataDetail[0])
                        el.get_element(RPdataDetail[j])
                        if type(args[i])==list:
                            pass
                        else:
    
                            if RPdataDetaildict.get('name').strip()==args[i].strip():
                                el.get().click()
                    '''

        el.getFunctionName('RPdataDetail')
        if button==None:
            pass
        else:
            for j in range(1, len(RPdataDetail)):
                RPdataDetaildict = EL.get_el_dict(RPdataDetail[0], RPdataDetail[j], cg.path)
                if RPdataDetaildict.get('name') ==button:
                    el.getFunctionName(RPdataDetail[0])
                    el.get_element(RPdataDetail[j])
                    el.get().click()

                    func.driver.switch_to.default_content()
                    xf = func.driver.find_element_by_xpath(
                        '/html/body/div[1]/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/iframe')
                    func.driver.switch_to.frame(xf)
                    urltxt = func.driver.current_url



                    if 'create.aspx' not in urltxt:
                        func.driver.switch_to.default_content()
                        xf = func.driver.find_element_by_xpath(
                            '/html/body/div[2]/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/iframe')
                        func.driver.switch_to.frame(xf)
                        #print func.driver.current_url


                    if button==u'生成报告':
                        if sub==u'正式报告':
                            elrd=func.driver.find_elements_by_xpath('//*[@id="table"]/table/tbody/tr[3]/td[2]/label')
                            rd=random.randint(0,len(elrd)-1)
                            elrd[rd].click()
                            # TODO 进行工具测试
                            # elrd[2].click()
                    else:
                        pass
                        '''
                        func.driver.switch_to.default_content()
                        xf = func.driver.find_element_by_xpath(
                            '/html/body/div[1]/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/iframe')
                        func.driver.switch_to.frame(xf)
                        urltxt = func.driver.current_url
                        print urltxt
                        if 'create.aspx' not in urltxt:
                            func.driver.switch_to.default_content()
                            xf = func.driver.find_element_by_xpath(
                                '/html/body/div[2]/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/iframe')
                            func.driver.switch_to.frame(xf)
                            print func.driver.current_url
                        '''
                    func.driver.find_element_by_id('complt').click()
                    mdl = func.driver.find_elements_by_xpath('/html/body/div[2]/div/table/tbody/tr')

                    rds = random.randint(0, len(mdl) - 1)
                    mdl[rds].click()
                    #TODO 进行工具测试
                    # for i in range(len(mdl)):
                    #     #print mdl[i].find_element_by_tag_name('td').get_attribute('text')==u'TEST测试模板'
                    #     if mdl[i].find_element_by_tag_name('td').get_attribute('text').strip()==u'TEST测试模板':
                    #         mdl[i].find_element_by_tag_name('td').click()
                    #         break
                    # else:
                    #     print u'没发现模板'
                    #     exit()

                    func.driver.find_element_by_id('btnCreateReport').click()
                    #TODO 单独自动化测试
                    # pngnum=str(time.time())
                    # print pngnum
                    # save_fn=r'D:\\img/'+pngnum+'.png'
                    # func.driver.find_element_by_id('btnCreateReport').click()
                    # func.driver.save_screenshot(save_fn)



                    func.driver.switch_to.default_content()
                    xf = func.driver.find_element_by_xpath(
                        '/html/body/div[1]/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/iframe')
                    func.driver.switch_to.frame(xf)
                    urltxt = func.driver.current_url
                    #print urltxt
                    if 'EditReportFromTemplate' not in urltxt:
                        func.driver.switch_to.default_content()
                        xf = func.driver.find_element_by_xpath(
                            '/html/body/div[2]/table/tbody/tr[2]/td[2]/div/table/tbody/tr[2]/td[2]/div/iframe')
                        func.driver.switch_to.frame(xf)
                        #print func.driver.current_url
                    btsave=func.driver.find_element_by_id('btnCreate')
                    while not btsave.is_enabled():
                        sleep(2)

                    btsave.click()
                    func.driver.switch_to.alert.accept()
                    return
        if sub==u'业务登记':
            el.get_element('btnSubmit')
            el.get().click()
            func.driver.switch_to.default_content()
            sleep(1)
            func.driver.find_element_by_xpath(u'//*[@value="直接提交"]').click()
            sleep(0.5)
            func.driver.find_element_by_xpath(u'//*[@value="确定"]').click()
        else:
            el.get_element('btnsave')
            el.get().click()

        return currenttxtList
    def parse(self, response):
        self.driver.get(response.url)
        select = Select(self.driver.find_element_by_xpath('//*[@id="selectedSubjects"]'))
        num_options = len(select.options)
        json_data = []

        # Iterate over each subject listed in the combobox
        for i in range(num_options - 1):
            self.driver.get(response.url)

            # Wait for subjects appear in options box, then click
            WebDriverWait(self.driver, 10).until(
                EC.presence_of_element_located((By.XPATH, '//*[@id="selectedSubjects"]'))
            )
            Select(self.driver.find_element_by_xpath('//*[@id="selectedSubjects"]')).select_by_index(i)

            subject_selection = Select(self.driver.find_element_by_xpath('//*[@id="selectedSubjects"]')).options[i].text
            course_subject_long = subject_selection[(subject_selection.index('-') + 2):]
            course_subject = subject_selection[:(subject_selection.index('-') - 1)]

            # Hit submit to get courses for that subject
            self.driver.find_element_by_xpath('//*[@id="socFacSubmit"]').click()

            # Try to get the number of pages for this subject
            try:
                total_page_number = scrapy.Selector(text=unicode(self.driver.page_source)).xpath(
                    '//*[@id="socDisplayCVO"]/div[2]/table/tbody/tr/td[3]/text()[1]').extract_first(default='f 0)')
                total_page_number = int(
                    total_page_number[(total_page_number.index('f') + 2):total_page_number.index(')')])
            except:
                total_page_number = 0

            # Iterate over each page in for the results of this subject
            for j in range(1, total_page_number + 1):
                self.driver.get('https://act.ucsd.edu/scheduleOfClasses/scheduleOfClassesStudentResult.htm?page=' +
                                str(j))

                result_selector = scrapy.Selector(text=self.driver.page_source.encode('utf-8'))
                course_selectors = result_selector.xpath('//*[@id="socDisplayCVO"]/table/tbody/tr/td[3]/a/span')

                # Iterate over each course selector. Its neighbor element will give the professor name (cant get any
                # other way)
                for selector in course_selectors:
                    course_title = unicode(selector.xpath('.//text()').extract_first(default=''))

                    if '  ' in course_title:
                        course_title = course_title[:course_title.index('  ')]

                    course_number = unicode(selector.xpath(
                        './/ancestor::td[1]/preceding-sibling::td[1]/text()').extract_first(
                        ''))
                    professor_name = selector.xpath(
                        './/ancestor::tr[1]//following-sibling::tr[1]/td/a/text()').extract_first(
                        default=None)

                    # Get non-linked version of name... TODO: not working
                    if not professor_name:
                        professor_name = selector.xpath(
                            './/ancestor::tr[1]//following-sibling::tr[1]/td/text()').extract_first(
                                default=None
                            )
                        if not re.search('[a-zA-z]', professor_name):
                            professor_name = ''

                    professor_name = unicode(professor_name)
                    professor_name = (professor_name[:professor_name.index('  ')] if professor_name else '')
                    json_data.append(
                        {
                            "courseSubject": course_subject,
                            "courseSubjectLong": course_subject_long,
                            "courseName": course_title,
                            "courseNumber": course_number,
                            "professorName": professor_name
                        }
                    )

        self.data.write(unicode(json.dumps(json_data, indent=4)))