鍍金池/ 問答/Python/ 使用selenium無法定位天貓的密碼登陸按鈕

使用selenium無法定位天貓的密碼登陸按鈕

1.準(zhǔn)備使用自動(dòng)化腳本自動(dòng)結(jié)算所買的東西
2.卡在了登陸界面,無法定位使用賬號密碼登陸的按鈕——“密碼登陸”
3.使用 firefox F12 進(jìn)行調(diào)試,并用工具獲取了 xpath,然后 find_element_by_xpath,報(bào)無此對象..
4.網(wǎng)上說可能沒有加載完頁面,我 sleep 了幾秒還是一樣的錯(cuò)

#-*-coding:gb2312-*-
import urllib,urllib2,httplib,cookielib
import ssl
import os
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import sys

stdi, stdo, stde = sys.stdin, sys.stdout, sys.stderr
reload(sys)
sys.stdin, sys.stdout, sys.stderr = stdi, stdo, stde

sys.setdefaultencoding('gb2312')
#sys.path.append(r'C:\Python27\Lib\site-packages')
#import win32api

#def auto_login_hi(url,name,pwd):
def test():
    for seq in range(10):
        ssl._create_default_https_context = ssl._create_unverified_context
        #browser = webdriver.Firefox()
        username = "user1" 
        passwd = "passwd1"
        browser = webdriver.Firefox()
        browser.get('https://login.tmall.com/')
        browser.implicitly_wait(10)
        '''
        if not browser.switch_to_alert() == '':
            alert = browser.switch_to_alert()
            print alert.text
            alert.accept()
        '''
        #text = '密碼登陸'
        #text_after = text.decode('utf-8')
        #elem=browser.find_element_by_class_name('poptip-content')
        time.sleep(5)
        
        elem = browser.find_element_by_xpath("/html/body/div[1]/div/div/div[2]/div[4]/div/div[5]/a[1]")
        print elem
        elem.click() #進(jìn)入登陸頁面
    
        elem_login = browser.find_element_by_id("TPL-username_1")
        elem_login.send_keys(username)
        elem_login = browser.find_element_by_id("TPL-password_1")
        elem.send_keys(passwd)
        elem=browser.find_element_by_class_name("J_Submit")
        elem.click()#提交后登陸
        elem_buy = browser.find_element_by_id("mc-menu-hd")
        elem_buy.click()
        elem_in_car = browser.find_element_by_id("J_SelectAllCbx1")
        elem_in_car.click()
        time.sleep(10)
        browser.quit()
test()
回答
編輯回答
局外人

driver.get("https://login.tmall.com/")
time.sleep(5)
driver.switch_to_frame("J_loginIframe")
driver.find_element_by_id("J_Quick2Static").click()
driver.find_element_by_class_name("ph-label").send_keys("123456@qq.com")
密碼填寫 提交相信你可以搞定!

2017年4月1日 20:55
編輯回答
款爺

你仔細(xì)檢查一下你的代碼。你的密碼框使用的是elem_login,而輸入密碼的對象是elem。。。

2017年11月24日 22:17
編輯回答
若相惜

天貓頁面打開默認(rèn)是掃碼登錄頁面
首先執(zhí)行

browser.switch_to.frame("J_loginIframe")

切換到標(biāo)簽
而后執(zhí)行

driver.find_element_by_id('J_Quick2Static').click()

切換到密碼登錄頁面
輸入用戶名和密碼
點(diǎn)擊提交

driver.find_element_by_id('J_SubmitStatic').click()
2017年6月12日 22:23
編輯回答
鐧簞噯

曾經(jīng)我使用過selenium+phantomjs+pymouse做過淘寶登錄,但是僅僅是一分鐘之后,我就被要求輸入手機(jī)驗(yàn)證碼了。如果有答案一定要告知一下。

2018年3月8日 17:09
編輯回答
凹凸曼

登錄框在iframe里,打開頁面后,需要切換到iframe。

browser.get('https://login.tmall.com/')
browser.switch_to.frame("J_loginIframe")
2018年7月15日 18:26