Selenium查询10010账户余额——python篇

简介: [本文出自天外归云的博客园] 问题 最近在网上搜到了一些练习题,改编了一下这里的20题如下:登陆中国联通网上营业厅 后选择「自助服务」-->「查询」-->「账户余额」,然后输出手机号码和可用额度。 思路 1. 通过抓包模拟接口请求的方式和一些爬网的相关方法解决; 2. 通过selenium进行一些web自动化操作解决。

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

问题

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

思路

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

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

编写脚本

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

# -*- coding: utf-8 -*-
from selenium import webdriver
import selenium.webdriver.support.ui as ui

def login_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").text
    print(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").text
    print(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路径:

 

 
相关文章
|
Web App开发 存储 前端开发
Python+Selenium自动化爬取携程动态加载游记
Python+Selenium自动化爬取携程动态加载游记
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
1247 68
|
12月前
|
SQL 测试技术 数据库
healenium+python+selenium
上次介绍了如何利用healenium+java+selenium来实现selenium的自愈,这次介绍如何healenium+python+selenium。关于healenium+python+selenium网上资料更少,并且甚至是错误的。在著名的书籍《软件测试权威指南中》也是有一定问题的。现在介绍如下
529 4
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
1109 5
|
存储 小程序 Python
农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序
### 农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序 该程序通过`lunardate`库实现公历与农历的日期转换,支持闰月和跨年处理,用户输入农历节日名称后,可准确计算距离该节日还有多少天。功能包括农历节日查询、倒计时计算等。欢迎使用! (239字符)
1446 86
|
数据采集 Web App开发 前端开发
Python+Selenium爬虫:豆瓣登录反反爬策略解析
Python+Selenium爬虫:豆瓣登录反反爬策略解析
|
数据采集 Web App开发 存储
打造高效的Web Scraper:Python与Selenium的完美结合
本文介绍如何使用Python结合Selenium,通过代理IP、设置Cookie和User-Agent抓取BOSS直聘的招聘信息,包括公司名称、岗位、要求和薪资。这些数据可用于行业趋势、人才需求、企业动态及区域经济分析,为求职者、企业和分析师提供宝贵信息。文中详细说明了环境准备、代理配置、登录操作及数据抓取步骤,并提醒注意反爬虫机制和验证码处理等问题。
818 1
打造高效的Web Scraper:Python与Selenium的完美结合
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
Web App开发 数据采集 数据安全/隐私保护
Selenium库详解:Python实现模拟登录与反爬限制的进阶指南
Selenium库详解:Python实现模拟登录与反爬限制的进阶指南
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
1187 6

推荐镜像

更多