selenium03-三个简单的web自动化实例

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()  #登录

 

结果:登录成功了。

 

总结:登录验证确实很头疼,不过初入门的也不需要对自己要求这么高,一般中小型公司自己的网站应该都没有反自动化工具的功能吧,基本上提供个账号+密码就可以登录了。

posted @ 2019-07-15 23:32  星海问道者  阅读(1511)  评论(0编辑  收藏  举报