selenium2+python3登录163邮箱

首先查看页面的整个登录流程:

打开mail.163.com→点击邮箱账号登录→账号输入框→密码输入框→登录

一、单一流程实现:打开网页,找到邮箱账号登录,输入账号密码,登录

# 导入webdriver驱动
from selenium import webdriver
from time import ctime
# 新建火狐浏览器驱动
dr = webdriver.Firefox()
dr.get('https://mail.163.com')
# 点击邮箱账号登录,使用xpath定位
dr.find_element_by_xpath('//*[@id="lbNormal"]').click()
print(ctime(), '已点击邮箱账号登录')
# 接下来实现账号密码登录,同样需要定位,但是发现每次账号密码都找不到Can't find element从网上查找资料才知道这块是作了表单设计,需要切换到frame定位。
# 同样直接在浏览器查看元素也能发现账号密码输入框其实在frame内

# 那就先定位frame,然后查看frame的属性发现它的id是个小数,所以应该是作了随机值可变的,不好定位。但是可以发现frame的父元素div的属性是固定的,通过div找frame

dl_frame = dr.find_element_by_xpath('//*[@id="loginDiv"]/iframe')
# 切换到frame
dr.switch_to.frame(dl_frame)

#下面开始输入账号和密码

dr.find_element_by_name('email').clear()
dr.find_element_by_name('email').send_keys('**zhanghao**')
dr.find_element_by_name('password').clear()
dr.find_element_by_name('password').send_keys('***mima***')

# 然后点击登录(登录按钮也是在这个frame下)

dr.find_element_by_css_selector('#dologin').click()

# 登陆后切换表单到主页面

dr.switch_to.default_content()

# 登陆后打印页面title

print('当前页面标题:'dr.title)

执行报错:

才发现div下面的frame是iframe,更改后执行:

到目前,单线登录完成。


 

猜你喜欢

转载自www.cnblogs.com/wjlv/p/10583257.html