python+selenium自动登录163邮箱

尝试登录163邮箱,发现使用xpath定位到的账号输入框id每次都有变化。网上查了资料才知道这里用到了表单。

然后也还是遇到了坑。下面贴源码

# 导入webdriverApi
from selenium import webdriver
from time import sleep
# 新建驱动器
dr = webdriver.Firefox()
dr.get('http://mail.163.com')
# 隐式等待10s,等待页面上的所有元素都加载出来后再操作
dr.implicitly_wait(10)
# 找到账号所在frame,也可以直接定位第几个iframe,dr.switch_to.frame(0)这里是第一个,打开F2搜索即可
ifra = dr.find_element_by_css_selector('div.loginUrs>iframe')
# 切换到账号所在frame
dr.switch_to.frame(ifra)
dr.implicitly_wait(5)
# 查找账号输入框,其实可以更简单点直接使用名称by_name即可(email,password)
account_input = dr.find_element_by_css_selector('.j-inputtext.dlemail')
passwd_input = dr.find_element_by_css_selector('.j-inputtext.dlpwd')
account_input.clear()
account_input.send_keys('zhanghao***')
passwd_input.clear()
passwd_input.send_keys('*mima*****')
# 密码直接提交无法登录
# passwd_input.submit()
dr.find_element_by_css_selector('#dologin').click()
print('登录成功')
sleep(5)
# 切换到顶级页面
dr.switch_to.default_content()

这边之所以先定位到frame是因为网上说的使用id定位不好使

 switch_to.frame('x-URS-iframe')

因为现在加了随机值:

 

posted @ 2019-03-21 21:57  唐大侠的小迷弟  阅读(367)  评论(0编辑  收藏  举报