def modelWalker(): global driver, prevTrail, modelName rootUrl = 'http://www2.zyxel.com/us/en/support/DownloadLandingSR.shtml?c=us&l=en&md=' try: startIdx = getStartIdx() ulog('len(allModels)=%d' % len(allModels)) for idx in range(startIdx, len(allModels)): ulog('idx=%s' % idx) modelName = allModels[idx] ulog('modelName="%s"' % modelName) goToUrl(rootUrl + parse.quote(modelName)) waitUntil(isReadyState) # click "Firmware" tab tab = elemWithText('li.resp-tab-item', 'Firmware') if not tab: ulog('no Firmware tab,bypass!') prevTrail += [idx] upsertOneModel() prevTrail.pop() continue tab.click() time.sleep(0.1) prevTrail += [idx] versionWalker() prevTrail.pop() except Exception as ex: ipdb.set_trace() traceback.print_exc() driver.save_screenshot(getScriptName() + '_' + getFuncName() + '_excep.png')
def modelWalker(): global driver, prevTrail, modelName rootUrl='http://www2.zyxel.com/us/en/support/DownloadLandingSR.shtml?c=us&l=en&md=' try: startIdx = getStartIdx() ulog('len(allModels)=%d'%len(allModels)) for idx in range(startIdx,len(allModels)): ulog('idx=%s'%idx) modelName=allModels[idx] ulog('modelName="%s"'%modelName) goToUrl(rootUrl+parse.quote(modelName)) waitUntil(isReadyState) # click "Firmware" tab tab = elemWithText('li.resp-tab-item','Firmware') if not tab: ulog('no Firmware tab,bypass!') prevTrail+=[idx] upsertOneModel() prevTrail.pop() continue tab.click() time.sleep(0.1) prevTrail+=[idx] versionWalker() prevTrail.pop() except Exception as ex: ipdb.set_trace() traceback.print_exc() driver.save_screenshot(getScriptName()+'_'+getFuncName()+'_excep.png')
def fileEnumer(): global driver,prevTrail,modelName CSS=driver.find_element_by_css_selector CSSs=driver.find_elements_by_css_selector try: try: waitClickable('#lisupport a',15,1.6).click() except TimeoutException: driver.save_screenshot('asus_no_firmware_download.png') ulog('No firmware download for "%s" !'%modelName) return enterFrame('ifame_auto_size') # click 'Driver & Tools' waitClickable('#a_support_tab_Download',40,2).click() # switch to frame enterFrame('ifame_auto_size') # open dropdown list to select "Others" OS waitClickable('#mainzone_Download2_btn_select_os',10,1).click() retryA(lambda:elemWithText('ul.dropdown-menu.os a', "Others").click()) try: # expand firmware dropdown waitClickable('#btn_type_20',20,1).click() except TimeoutException: driver.save_screenshot('asus_no_firmware_download_2.png') ulog('No firmware download for" %s"!'%modelName) return # retryA(lambda:elemWithText('#download a','Firmware').click(), 20,1) waitUntilStable('#div_type_20',3,0.4) tables = [_ for _ in CSSs('#div_type_20 table') if getElemText(_).startswith('Description')] numTables = len(tables) ulog('numTables=%s'%numTables) versions = [getElemText(_) for _ in CSSs('#div_type_20 p')] assert len(versions)==numTables pageUrl=driver.current_url startIdx = getStartIdx() for idx in range(startIdx, numTables): desc = tables[idx].text relDate = guessDate(desc) fileSize = guessFileSize(desc) fwVer = guessVersion(versions[idx]) fileUrl = tables[idx].find_element_by_css_selector('a').get_attribute('href') trailStr=str(prevTrail+[idx]) sql("INSERT OR REPLACE INTO TFiles(" " model, fw_ver, rel_date, file_size, fw_desc, " " page_url, file_url, tree_trail) VALUES" "(:modelName,:fwVer,:relDate, :fileSize, :desc," ":pageUrl, :fileUrl, :trailStr)", glocals()) ulog('UPSERT "%(modelName)s", "%(fwVer)s", "%(relDate)s", ' '%(fileSize)s, "%(fileUrl)s", %(trailStr)s '%glocals()) except Exception as ex: ipdb.set_trace() traceback.print_exc() driver.save_screenshot(getScriptName()+'_'+getFuncName()+'_excep.png')
def tabWalker(): global driver, prevTrail try: tab = elemWithText('li.resp-tab-item', 'DOWNLOAD') tab.click() time.sleep(0.1) numTabs = len(tabs) startIdx = getStartIdx() for idx in range(startIdx,numTabs): ulog('tab idx=%s'%idx) if not tabs[idx].text.strip().startswith('DOWNLOAD'): continue prevTrail+=[idx] pageWalker() except Exception as ex: ipdb.set_trace() traceback.print_exc()
def tabWalker(): global driver, prevTrail try: tab = elemWithText('li.resp-tab-item', 'DOWNLOAD') tab.click() time.sleep(0.1) numTabs = len(tabs) startIdx = getStartIdx() for idx in range(startIdx, numTabs): ulog('tab idx=%s' % idx) if not tabs[idx].text.strip().startswith('DOWNLOAD'): continue prevTrail += [idx] pageWalker() except Exception as ex: ipdb.set_trace() traceback.print_exc()
def fileWalker(): global driver,prevTrail try: waitUntil(isReadyState) prodName=waitText('#prodname') ulog('prodName="%s"'%prodName) modelName = waitText('#prodmodel') ulog('modelName="%s"'%modelName) # click "Support" retryA(lambda: elemWithText('li.tab-link', 'Support').click()) # expand "Downloads" waitClickable('div.accordion-section:nth-child(2) a').click() pageUrl=driver.current_url # select tables try: tables = getElems('table.supp',9,1) except TimeoutException: tables=None if not tables: ulog('no firmware download for "%s"'%modelName) trailStr=str(prevTrail) sql("INSERT OR REPLACE INTO TFiles (model,product_name," "page_url,tree_trail) VALUES" "(:modelName, :prodName," ":pageUrl,:trailStr)",glocals()) ulog('UPSERT "%(modelName)s", "%(prodName)s", '%glocals()) driver.back() return files = getElems('table.supp tr') startIdx = getStartIdx() numFiles=len(files) ulog('numFiles=%s'%numFiles) bUpserted=False for idx in range(startIdx, numFiles): try: col=files[idx].find_element_by_css_selector('td:nth-child(1)') except NoSuchElementException: ulog('bypass idx=%s'%idx) continue fwDate=guessDate(col.text) if not fwDate: ulog('bypass idx=%s'%idx) continue desc=files[idx].find_element_by_css_selector('td:nth-child(2)') fwDesc=desc.text fileName=desc.find_element_by_css_selector('a') ulog('fileName.text="%s"'%fileName.text) if 'firmware' not in fileName.text.lower(): ulog('bypass idx=%s'%idx) continue fwVer = guessVersion(fileName.text) fileUrl=fileName.get_attribute('href') fwDesc=desc.text.strip() trailStr=str(prevTrail+[idx]) ulog('trail=%s'%trailStr) sql("INSERT OR REPLACE INTO TFiles (model,product_name," "fw_date, fw_ver, fw_desc, " "page_url,file_url,tree_trail) VALUES" "(:modelName, :prodName," ":fwDate,:fwVer,:fwDesc," ":pageUrl,:fileUrl,:trailStr)",glocals()) ulog('UPSERT "%(modelName)s", "%(prodName)s", "%(fwDate)s", ' ' "%(fwVer)s", %(fileUrl)s'%glocals()) bUpserted=True if not bUpserted: trailStr=str(prevTrail) sql("INSERT OR REPLACE INTO TFiles (model,product_name," "page_url,tree_trail) VALUES" "(:modelName, :prodName," ":pageUrl,:trailStr)",glocals()) ulog('UPSERT "%(modelName)s", "%(prodName)s", '%glocals()) driver.back() return except Exception as ex: ipdb.set_trace() traceback.print_exc() driver.save_screenshot(getScriptName()+'_'+getFuncName()+'_exc.png')