使用selenium无法定位天猫的密码登陆按钮

1.准备使用自动化脚本自动结算所买的东西
2.卡在了登陆界面,无法定位使用账号密码登陆的按钮——“密码登陆”
3.使用 firefox F12 进行调试,并用工具获取了 xpath,然后 find_element_by_xpath,报无此对象..
4.网上说可能没有加载完页面,我 sleep 了几秒还是一样的错

#-*-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() #进入登陆页面
    
        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()
阅读 5.9k
5 个回答

曾经我使用过selenium+phantomjs+pymouse做过淘宝登录,但是仅仅是一分钟之后,我就被要求输入手机验证码了。如果有答案一定要告知一下。

登录框在iframe里,打开页面后,需要切换到iframe。

browser.get('https://login.tmall.com/')
browser.switch_to.frame("J_loginIframe")

你仔细检查一下你的代码。你的密码框使用的是elem_login,而输入密码的对象是elem。。。

天猫页面打开默认是扫码登录页面
首先执行

browser.switch_to.frame("J_loginIframe")

切换到标签
而后执行

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

切换到密码登录页面
输入用户名和密码
点击提交

driver.find_element_by_id('J_SubmitStatic').click()

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")
密码填写 提交相信你可以搞定!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题