接上篇淘宝使用selenium扫码登录文中发现,淘宝大约在90秒左右会重新刷新二维码,这时需要点击界面上的“请点击刷新”按钮,重新获取新的二维码才能进行扫码。之前的二维码将会失效。
我们把获取二维码的功能单独提取出来:
def get_qrcode_img_link_address(): if driver.find_element_by_id("J_QRCodeImg"): print 'get the QRCodeImgUrl.....' print driver.find_element_by_id("J_QRCodeImg").find_element_by_tag_name("img").get_attribute("src") use_chrome_open_url( driver.find_element_by_id("J_QRCodeImg").find_element_by_tag_name("img").get_attribute("src"))
再重新设计login函数体:
def login(): driver.get("https://www.taobao.com") driver.maximize_window() if driver.find_element_by_link_text("亲,请登录"): driver.find_element_by_link_text("亲,请登录").click(); time.sleep(1) get_qrcode_img_link_address() while True: try: if driver.find_element_by_link_text("密码登录"): print "请扫码登录..." time.sleep(1) try: if driver.find_element_by_link_text("请点击刷新"): driver.find_element_by_link_text("请点击刷新").click() time.sleep(1) get_qrcode_img_link_address() except NoSuchElementException: time.sleep(1) continue except NoSuchElementException: print "成功登录..." print driver.current_url break time.sleep(1)
其他保持与上文不变,亲测通过。有问题请留言,会及时回答。
淘宝优惠劵超市