1.百度登录
哈,学selenium,第一个想法就是拿百度登录试试,是的没错,就是它了!
from selenium import webdriver #导入webdriver
import time #导入时间模块
b = webdriver.Firefox() #打开火狐浏览器
b.maximize_window() #窗口最大化
b.get('http://www.baidu.com') #打开百度首页
time.sleep(2) #强制等待两秒,等网页完全打开
b.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[3]/a[7]').click() #打开登录框
time.sleep(2) #强制等待两秒,等登录框弹出
b.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click() #切换到账号密码登录
b.find_element_by_name('userName').send_keys('12345678') #输入账号
b.find_element_by_name('password').send_keys('12345678') #输入密码
b.find_element_by_name('memberPass').click() #取消密码保存
b.find_element_by_id('TANGRAM__PSP_10__submit').click() #登录
结果:点击登录后弹出手机号验证,所以登录未完成,不过过程代码应该是没错
2.淘宝
在百度受挫之后,第二个想到的就是淘宝。
from selenium import webdriver #导入webdriver
import time #导入时间
from selenium.webdriver.common.keys import Keys #导入Keys
b = webdriver.Firefox() #打开火狐浏览器
b.maximize_window() #窗口最大化
b.get('https://www.taobao.com/') #打开淘宝网
time.sleep(2) #强制等待2秒,等网页打开
b.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click() #点击跳转登录页面
time.sleep(2) #强制等待2秒,进入登录页面
b.find_element_by_id('J_Quick2Static').click() #选择账号密码登录模式
time.sleep(2) #强制等待2秒,等登录窗口打开
b.switch_to.active_element.send_keys('12345678') #输入账号
b.find_element_by_name('TPL_password').send_keys('12345678') #输入密码
b.find_element_by_id('J_Quick2Static').click() #点击登录
结果:又失败了,会出现一个滑块验证,我手工把滑块完成,显示“哎呀,出错了,点击刷新再来一次(error:N18f4f)”,刷新后再次操作滑块,依然报错。
后来百度得知,是淘宝网站监测到使用了自动化工具,所以这个滑块是无法完成的……
另外补充一点,账号输入框元素定位成功,但是无法输入,显示‘element is not reachable by keyboard’,有人说是firefox浏览器问题,于是使用另外的方式去输入了。
browser.switch_to.active_element.send_keys('****')
按照字面意思理解,应该是获取当前活动状态的元素,直接操作吧。
总而言之,虽然失败了,但是真不是我的问题,自动化工具的监测,还不是我这样一个小萌新能解决的,希望以后能搞定吧。
3.QQ邮箱
三大流氓 BAT 啊,BA 都试过了,轮到 T 了。
from selenium import webdriver #导入webdriver
import time #导入时间模块
b = webdriver.Firefox() #打开火狐浏览器
b.maximize_window() #窗口最大化
b.get('https://mail.qq.com/') #进入qq邮箱首页
time.sleep(2) #强制等待两秒
b.switch_to.frame('login_frame') #转入登录模块所在的 frame
b.find_element_by_id('switcher_plogin').click() #点击进入账号密码登录模式
time.sleep(2) #强制等待两秒
b.find_element_by_id('u').send_keys('12345678@qq.com') #输入账号
b.find_element_by_id('p').send_keys('12345678') #输入密码
b.find_element_by_id('p_low_login_enable').click() #点击选择记住密码:练习时最好别选,不然很容易触发验证
b.find_element_by_id('login_button').click() #登录
结果:登录成功了。
总结:登录验证确实很头疼,不过初入门的也不需要对自己要求这么高,一般中小型公司自己的网站应该都没有反自动化工具的功能吧,基本上提供个账号+密码就可以登录了。