[本文出自天外归云的博客园]

问题

最近在网上搜到了一些练习题,改编了一下这里的20题如下:登陆中国联通网上营业厅 后选择「自助服务」-->「查询」-->「账户余额」,然后输出手机号码和可用额度。

思路

1. 通过抓包模拟接口请求的方式和一些爬网的相关方法解决;

2. 通过selenium进行一些web自动化操作解决。

编写脚本

这里选择了第二种用selenium的方法来解决,脚本如下:

#-*- coding: utf-8 -*-
from selenium importwebdriverimportselenium.webdriver.support.ui as uideflogin_query_10010(username,pwd):driver=webdriver.PhantomJS()driver.get("http://iservice.10010.com/e4/")wait= ui.WebDriverWait(driver, 10)login_frame= driver.find_element_by_xpath("html/body/div[5]/div[1]/iframe")driver.switch_to_frame(login_frame);wait.until(lambda dr: dr.find_element_by_id('userName').is_displayed())driver.find_element_by_id("userName").send_keys(username)driver.find_element_by_id("userPwd").send_keys(pwd)driver.find_element_by_id("login1").click()driver.switch_to_default_content()wait.until(lambda dr: dr.find_element_by_id('menu_query').is_displayed())driver.find_element_by_id("menu_query").click()wait.until(lambda dr: dr.find_element_by_id('000100010002').is_displayed())driver.find_element_by_id("000100010002").click()wait.until(lambda dr: dr.find_element_by_xpath(".//*[@id='loadPage']/iframe").is_displayed())account_info_frame= driver.find_element_by_xpath(".//*[@id='loadPage']/iframe")driver.switch_to_frame(account_info_frame);wait.until(lambda dr: dr.find_element_by_id('userInfoContent').is_displayed())wait.until(lambda dr: dr.find_element_by_xpath(".//*[@id='userInfoContent']/dl[3]/dd").is_displayed())phone_number= driver.find_element_by_xpath(".//*[@id='userInfoContent']/dl[3]/dd").textprint(u"电话号:"+phone_number)wait.until(lambda dr: dr.find_element_by_xpath(".//*[@id='userInfoContent']/dl[4]/dd").is_displayed())available_amount= driver.find_element_by_xpath(".//*[@id='userInfoContent']/dl[4]/dd").textprint(u"可用预存款:"+available_amount)if __name__ == '__main__':login_query_10010("用户名","密码")

运行结果如下(脚本中用户名和密码为需替换的部分):

总结

总结一下遇到的一些经验点:

1. 通过phantomjs无界面浏览器可以实现无界面化web自动化访问;

2. 如果一个元素定位不到,要看看这个元素是否嵌在iframe元素中,这里用到了selenium定位页面元素之iframe元素的切换;

3. 确定页面元素可访问之后,如果还找不到定位的元素,可能是没有加载完成,需要进行一定时间的等待,这里用到了“wait.until”方法;

4. 定位页面元素可以用过id和一些属性,如果没有明显属性可以用来定位则可以考虑用xpath来定位,这里用到了firefox的一些xpath插件来辅助显示页面元素的xpath路径:

转载于:https://www.cnblogs.com/LanTianYou/p/6432953.html

Selenium查询10010账户余额——python篇相关推荐

  1. python selenium定位元素方法,python + selenium 练习篇 - 定位元素的方法

    1.利用ID定位元素(能直接通过ID来定位的元素比较少) # coding=utf-8 from selenium import webdriver driver = webdriver.Chrome ...

  2. python selenium截图_利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)...

    对WebElement截图 WebDriver.Chrome自带的方法只能对当前窗口截屏,且不能指定特定元素.若是需要截取特定元素或是窗口超过了一屏,就只能另辟蹊径了. WebDriver.Phant ...

  3. Machine Learning之Python篇(一)

    Machine Learning之Python篇 概述 教程 https://ljalphabeta.gitbooks.io/python-/content/ <Python机器学习>中文 ...

  4. python消息队列celery_【干货分享】NTI任务管理之django+python篇celery异步任务使用...

    阅读: 3,538 新浪微博的新鲜事推送如何实现?大规模的服务器如何实现Crontab管理?里面的秘密就在于消息队列.Celery是一个使用Python开发的分布式任务调度模块,是一个简单.灵活.可靠 ...

  5. 跟着王进老师学开发Python篇第三季:Tkinter GUI项目实战篇-王进-专题视频课程

    跟着王进老师学开发Python篇第三季:Tkinter GUI项目实战篇-465人已学习 课程介绍         本季课程为Tkinter GUI项目实战:学生信息管理系统, 内容包含:项目总体介绍 ...

  6. python处理pdf文件_好玩的Python 篇一:用Python显示和处理PDF文件

    好玩的Python 篇一:用Python显示和处理PDF文件 2020-05-25 00:20:30 0点赞 0收藏 0评论 pdf是电子书,文档经常会用的格式,除了下载各种阅读器以外,我们也可以用P ...

  7. AI 学习之路——轻松初探 Python 篇(一)

    喜欢小之的文章的可以关注公众号「WeaponZhi」持续关注动态 这是「AI 学习之路」的第 1 篇,「Python 学习」的第 1 篇 前言 1. Python 篇的组织结构 不管是学习人工智能还是 ...

  8. 谁说菜鸟不会数据分析python下载_刻意练习9:《谁说菜鸟不会数据分析python篇》第3章编程基础总计46页学习笔记...

    学习计划MyPlan9 主题:<谁说菜鸟不会数据分析python篇>第3章节 编程基础,总计46页. 时间:7.15-7.21 周内完成 各位星友们,在这个星球里每个人都要逼迫自己学习未知 ...

  9. Web自动化测试 Selenium+Eclipse+Junit+TestNG+Python

    Selenium+Eclipse+Junit+TestNG+Python 第三步 下载Selenium IDE.SeleniumRC.IEDriverServer.SeleniumClient Dri ...

最新文章

  1. Linux下如何查看tomcat是否启动/系统日志等
  2. 使用 Bamboo 构建项目的 CICD 过程文档
  3. 岗位推荐 | 腾讯招聘自然语言处理方向实习生
  4. GCD介绍(一): 基本概念和Dispatch Queue (转载)
  5. 4.extern关键字.rs
  6. linux 查看文件工具,lsof---Linux查看文件信息的强大工具
  7. java持久层用文件_Java持久层框架MyBatis简单实例
  8. java--小示例:-1:输入判断信息
  9. [转]C++学习步骤
  10. android开发实战-记账本APP(二)
  11. “缺少winload.efi”的解决办法“:Windows Boot Manager更改读取启动信息路径
  12. MMDetection2.XX-Backbone之ResNet源码最全解析
  13. DIV+CSS学习笔记总结篇
  14. 未分配虚拟网络-清理注册表
  15. 机房收费系统问题集(2)——移动登陆界面+show出子窗体
  16. 3D Touch大法
  17. 商家如何利用小程序积分营销工具为小程序引流?
  18. Android 各版本演变特性整理
  19. 最简单的基于FFmpeg的推流器(以推送RTMP为例)
  20. 《生物化学与分子生物学》----糖类----听课笔记(二)

热门文章

  1. java 中断 继续_中断,继续并在Java循环中标记
  2. 想做网络推广浅析网站的快照不更新是由哪些因素导致的?
  3. 尽管网站有些建设细节微不足道但终会一一爆发
  4. 如何提高营销型网站与搜索引擎之间的信任度?
  5. oracle中出现大量active,Oracle技术之大量会话出现resmgr:become active等待
  6. linux c不占用cpu的延时,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写...
  7. 没学过编程能学python吗_没有编程基础,可以自学Python吗?
  8. eolinker 相关
  9. 反射机制源码及原理学习
  10. Hive mapreduce SQL实现原理——SQL最终分解为MR任务,而group by在MR里和单词统计MR没有区别了...