Selenium基础知识 自动登录百度网盘

from selenium import webdriver
import time
from selenium.webdriver.common.by import By

data = {
    'url':'https://pan.baidu.com/',
    'enter_elem_id'   : 'TANGRAM__PSP_4__footerULoginBtn',
    'username_elem_id': 'TANGRAM__PSP_4__userName',
    'password_elem_id': 'TANGRAM__PSP_4__password',
    'submit_elem_id'  : 'TANGRAM__PSP_4__submit',
    'username'        : '*********',
    'password'        : '**********',
}

driver = webdriver.Edge()
# 设置浏览器窗口的位置和大小
driver.set_window_position(20,40)
driver.set_window_size(1100,700)

def testLogin():
    driver.get(data['url'])

    # 要先点击去登录按钮
    # driver的源码变了 这样不行 driver.find_element_by_class_name("u-button bd-login-button__wrapper u-button--primary").click()
    # 要这样写
    qudenglu = driver.find_element(by=By.CLASS_NAME,value="bd-login-button bd-login-content__login")
    time.sleep(3)
    qudenglu.click()


    time.sleep(3)
    username = driver.find_element(by=By.ID,value=data['username_elem_id'])
    password = driver.find_element(by=By.ID,value=data['password_elem_id'])
    submit = driver.find_element(by=By.ID,value=data['submit_elem_id'])
    time.sleep(2)
    username.send_keys(data['username'])

    time.sleep(2)
    password.send_keys(data['password'])
    time.sleep(2)
    submit.click()

if __name__  == '__main__':
    testLogin()

只能打开网页 没有点击去登录按钮
报错如下:
请添加图片描述
用之前写的自动登录QQ空间试了一下,将使用id定位改为使用classname定位后也失败
请添加图片描述

使用Selenium模拟登陆百度盘

自动登录百度网盘

利用selenium自动登录百度网盘

二改 发现问题所在

终于发现了 通过实验百度自动搜索 发现用classname定位元素不能有空格

	qudenglu = driver.find_element(by=By.CLASS_NAME,value='bd-login-button__wrapper')
    time.sleep(3)
    qudenglu.click()

?如果一定得用有空格的字符串来定位,。。。还没找到解决方法,搜索了一下也没发现为什么有空格就无法定位了

最终代码:

from selenium import webdriver
import time
from selenium.webdriver.common.by import By

data = {
    'url':'https://pan.baidu.com/',
    'enter_elem_classname'   : 'bd-login-button__wrapper',
    'username_elem_id': 'TANGRAM__PSP_11__userName',
    'password_elem_id': 'TANGRAM__PSP_11__password',
    'submit_elem_id'  : 'TANGRAM__PSP_11__submit',
    'username'        : '********',
    'password'        : '********',
}

driver = webdriver.Edge()
# 设置浏览器窗口的位置和大小
driver.set_window_position(20,40)
driver.set_window_size(1100,700)

def testLogin():
    driver.get(data['url'])

    # 要先点击去登录按钮
    # driver的源码变了 这样不行 driver.find_element_by_class_name("u-button bd-login-button__wrapper u-button--primary").click()
    # 要这样写
    qudenglu = driver.find_element(by=By.CLASS_NAME,value=data['enter_elem_classname'])
    time.sleep(2)
    qudenglu.click()

    time.sleep(2)
    username = driver.find_element(by=By.ID,value=data['username_elem_id'])
    password = driver.find_element(by=By.ID,value=data['password_elem_id'])
    submit = driver.find_element(by=By.ID,value=data['submit_elem_id'])
    time.sleep(2)
    username.send_keys(data['username'])

    time.sleep(2)
    password.send_keys(data['password'])
    time.sleep(2)
    submit.click()

if __name__  == '__main__':
    testLogin()

但是没有解决滑动验证码的问题,书上说后面会学,这里先跳过。

知识点:如何使用XPath定位元素
Web自动化之页面元素定位—Xpath

元素定位之css selector(选择器定位)

Python + selenium 元素定位(三),By方法查找元素----driver.find_element(By.XXX, “selector”)

定位元素
F12打开开发者工具 定位元素
使用Selenium模拟登陆百度盘查找定位


版权声明:本文为a_Seal_with_code原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>