Пример #1
0
def own_pick(driver, sizeIdx, dts):
    print 'own_pick begins...'
    idx = 0
    pIdx = 0
    ele = dts[idx]
    move_to_ele(driver, ele)
    print platfm.local_str('可以开始控制了:通过1,2,3,4选取物品,通过j和k控制窗口移动')
    while True:
        c = platfm.read_terminal()
        if c == 'j':  #向下
            idx += 4
            try:
                ele = dts[idx]  #选取的内容越界了,函数返回
            except:
                print platfm.local_str('进入下一页')
                return
            move_to_ele(driver, ele)
        elif c == 'k':  #向上
            if idx >= 4:
                idx -= 4
                ele = dts[idx]
                move_to_ele(driver, ele, '')
        elif c == '1' or c == '2' or c == '3' or c == '4':
            no = idx + int(c) - 1
            try:
                ele = dts[no]  #选取的内容越界了,继续循环
            except:
                continue
            href = ele.find_element_by_tag_name("a").get_attribute(
                'href') + ' ' + sizeIdx + platfm.Line
            proc.send_to_subp(href)
        elif c == 'q':
            raise Exception  #退出
    print 'own_pick ends...'
Пример #2
0
def own_pick(driver,sizeIdx,dts):
    print 'own_pick begins...'
    idx=0
    pIdx=0
    ele=dts[idx]
    move_to_ele(driver,ele)
    print platfm.local_str('可以开始控制了:通过1,2,3,4选取物品,通过j和k控制窗口移动')
    while True:
        c=platfm.read_terminal()
        if c=='j': #向下
            idx+=4
            try: ele=dts[idx] #选取的内容越界了,函数返回
            except: 
                print platfm.local_str('进入下一页')
                return
            move_to_ele(driver,ele)
        elif c=='k': #向上
            if idx>=4:
                idx-=4
                ele=dts[idx] 
                move_to_ele(driver,ele,'')
        elif c=='1' or c=='2' or c=='3' or c=='4':
            no=idx+int(c)-1
            try: 
                ele=dts[no] #选取的内容越界了,继续循环
            except : 
                continue
            href=ele.find_element_by_tag_name("a").get_attribute('href')+' '+sizeIdx+platfm.Line
            proc.send_to_subp(href)
        elif c=='q':
            raise Exception #退出
    print 'own_pick ends...'
Пример #3
0
def search_brand(item, name):
    '''搜需要的品牌'''
    print 'in search_brand',item,name
    try:  # 如果找不到,就直接return
        lis = driver.find_elements_by_class_name(item)
    except:
        print platfm.local_str('没有' + item + '条目,返回')
        return
    print 'after find'
    # driver.set_page_load_timeout(0.5) #0.5s超时,太短的话(0.1s)click可能会超时
    driver.set_page_load_timeout(4)  # 等待嵌套页面加载需要的时间较长
    for li in lis:
        info = li.find_element_by_class_name(name).text
        print info
        # 至少包括Brands里的一项,包括Keys里的所有项
        if (filter(lambda x: x.lower() in info.lower(), Brands) and
                (Keys and Keys == filter(lambda x: x.lower() in info.lower(),
                 Keys) or not Keys)):
            global MixFlag
            if u"男女" in info:
                MixFlag = True
            action = ActionChains(driver)
            action.click(li).perform()
            print 'after click'
            time.sleep(5)
            print 'after sleep'
            # 切换到新的窗口
            print 'go into ' + info
            page.switch_do(driver, process)
            MixFlag = False
Пример #4
0
def search_brand(item, name):
    '''搜需要的品牌'''
    print 'in search_brand', item, name
    try:  # 如果找不到,就直接return
        lis = driver.find_elements_by_class_name(item)
    except:
        print platfm.local_str('没有' + item + '条目,返回')
        return
    print 'after find'
    # driver.set_page_load_timeout(0.5) #0.5s超时,太短的话(0.1s)click可能会超时
    driver.set_page_load_timeout(4)  # 等待嵌套页面加载需要的时间较长
    for li in lis:
        info = li.find_element_by_class_name(name).text
        print info
        # 至少包括Brands里的一项,包括Keys里的所有项
        if (filter(lambda x: x.lower() in info.lower(), Brands) and
            (Keys and Keys == filter(lambda x: x.lower() in info.lower(), Keys)
             or not Keys)):
            global MixFlag
            if u"男女" in info:
                MixFlag = True
            action = ActionChains(driver)
            action.click(li).perform()
            print 'after click'
            time.sleep(5)
            print 'after sleep'
            # 切换到新的窗口
            print 'go into ' + info
            page.switch_do(driver, process)
            MixFlag = False
Пример #5
0
def process(driver, base_page):
    '''处理每一个品牌'''
    # 暂时不处理嵌套页面
    # nest_page(driver)  # 嵌套页面
    print 'process begins...'
    sizeIdx = -1
    for type, size in zip(Type, Size):
        print type, size
        has_more = True
        num = 1
        sizeIdx += 1
        while has_more:
            # 加载新页
            new_url = base_page + \
                "?q=0|%s|%s|%s|%s|%d" % (
                    TYPE[type],
                    SIZE[size.lower()],
                    EMPTY[Empty],
                    SORT[Sort],
                    num)
            print new_url
            driver.set_page_load_timeout(3)  # 3s超时
            page.call_ignore(driver.get, new_url)
            num += 1
            print 'after get the page'
            # 判断是否存在
            try:
                driver.find_element_by_class_name('pro_find_none')
            except NoSuchElementException:
                pass
            else:
                print platfm.local_str('不存在该类别的商品')
                break
            # 判断是否是最后一页
            try:
                attr = driver.find_element_by_class_name(
                    'page_next').get_attribute(
                    'href')
                if not attr:
                    has_more = False
            except:
                has_more = False
            print 'before control'
            control(driver, str(sizeIdx))
            print 'after control'
    print 'process ends...'
Пример #6
0
def process(driver, base_page):
    '''处理每一个品牌'''
    # 暂时不处理嵌套页面
    # nest_page(driver)  # 嵌套页面
    print 'process begins...'
    sizeIdx = -1
    for type, size in zip(Type, Size):
        print type, size
        has_more = True
        num = 1
        sizeIdx += 1
        while has_more:
            # 加载新页
            new_url = base_page + \
                "?q=0|%s|%s|%s|%s|%d" % (
                    TYPE[type],
                    SIZE[size.lower()],
                    EMPTY[Empty],
                    SORT[Sort],
                    num)
            print new_url
            driver.set_page_load_timeout(3)  # 3s超时
            page.call_ignore(driver.get, new_url)
            num += 1
            print 'after get the page'
            # 判断是否存在
            try:
                driver.find_element_by_class_name('pro_find_none')
            except NoSuchElementException:
                pass
            else:
                print platfm.local_str('不存在该类别的商品')
                break
            # 判断是否是最后一页
            try:
                attr = driver.find_element_by_class_name(
                    'page_next').get_attribute('href')
                if not attr:
                    has_more = False
            except:
                has_more = False
            print 'before control'
            control(driver, str(sizeIdx))
            print 'after control'
    print 'process ends...'