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...'
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...'
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
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
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...'
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...'