234十 2019-08-04 21:50 采纳率: 100%
浏览 364

请懂python+selenium的帮忙解答下我的疑问

图片说明
这种登录的界面,有时会在密码下面出现一个需要输入验证码的框。旁边有一张图片,验证码为英文和数字的组合。我的疑问是打开这个页面的时候,怎么判断我打开的页面是有验证码的。如果有验证码,让其输入用户名,密码,验证码后,点击 登录,登录 成功。没有验证码的时候,输入用户名和密码,点击登录即可登录成功。关于判断界面是否有验证码的代码是加在打开网页后,还是加在输入用户名和密码后,在点击登录之前呢?本人初学这个。请高手不吝赐教,谢谢!
下面附上我的代码

from selenium import webdriver#导入selenium下的webdriver
from time import sleep#导入time下的sleep
from selenium.webdriver.common.action_chains import ActionChains#导入鼠标事件,登录后的操作需要用到鼠标悬浮

browser=webdriver.Firefox()#定义浏览器为Firefox
browser.get('https://tapd.)#打开链接地址
browser.maximize_window()#最大化浏览器窗口
browser.implicitly_wait(10)#隐式等待最多10秒
browser.find_element_by_xpath('//*[@id="l_p_m"]/div[2]/label').click()#使用xpath定位到用户名输入框,并点击
browser.find_element_by_xpath('//*[@id="username"]').send_keys('ng')#向用户名输入框,输入用户名
browser.find_element_by_id('password_input').send_keys('2448)#向密码输入框,输入密码
browser.find_element_by_xpath('//*[@id="login_button"]').click()#点击下方的登录
ActionChains(browser).move_to_element(browser.find_element_by_xpath('/html/body/div[4]/ul/li[2]/ul/li[1]/a')).perform()#使用鼠标悬浮到登录的菜单上。
browser.find_element_by_link_text(u'每日签入/签出').click()#使用link_text定位到元素上,并点击
browser.find_element_by_xpath('//*[@id="checkin_btn"]').click()#使用id定位到元素并点击
browser.quit(self)#退出浏览器

  • 写回答

3条回答

  • 毕小宝 博客专家认证 2019-08-05 08:58
    关注

    先分析有验证码时的页面输入域的 id 特征,然后以此特征作为搜索条件,如果能找到该元素,则就走该方式的验证。
    判断时机应该是在触发登录按钮点击之前。

    评论

报告相同问题?

悬赏问题

  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错