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')
因为现在加了随机值: