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定位后也失败
二改 发现问题所在
终于发现了 通过实验百度自动搜索 发现用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
Python + selenium 元素定位(三),By方法查找元素----driver.find_element(By.XXX, “selector”)
F12打开开发者工具 定位元素
使用Selenium模拟登陆百度盘查找定位
版权声明:本文为a_Seal_with_code原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。