利用selenium写个小程序自动输出建设银行卡中的余额数

最近学习了一下selenium,写了一个小程序,想与大家分享一下。

那时自己想查看自己建设银行卡中的余额数,刚好自己学了点selenium,二话不说就准备写个小程序来实现一下。结果一写就是两三天,太难了!

主要还是对iframe不熟,由于网页源代码太多,一层套一层的,没有找到iframe,结果导致总是定位不到指定元素,无知的自己还试各种定位方法。所以,切记:定位不到元素时一定要找iframe或frame标签!!!

实现细节请看代码:

from selenium import webdriver
import re  #导入正则模块

#选中所需浏览器驱动,如果将驱动路径添加到环境变量,就不需要再传入路径
wd = webdriver.Firefox(executable_path='C:\Program Files\Mozilla Firefox\geckodriver.exe') 

wd.implicitly_wait(10)  #隐式等待,网页响应需要时间,最多等待10s
#中国建设银行登录界面
wd.get('https://ibsbjstar.ccb.com.cn/CCBIS/V6/common/login.jsp?UDC_CUSTOMER'
       '_ID=&UDC_CUSTOMER_NAME=&UDC_COOKIE=2da16592d0e935b1kdZv3GDyLeRVE3R8b8yW1571840415014i5Kaq'
       'fFTSBVCnuqacmJKc8cbc672eaecffc110f2528c6b8f25e3&UDC_SESSION_ID=yTAMSPlVAKXG0uv971fcc73931d-20200424215252')
#由于账号输入的相关标签在iframe中,要切换进去才能操作相应标签
wd.switch_to.frame('fQRLGIN')  #id='fQRLGIN'
#找到账号输入标签
element1 = wd.find_element_by_css_selector('#USERID')
#输入账号
element1.send_keys('账号')
#找到密码输入标签
element2 = wd.find_element_by_id('LOGPASS')
element2.send_keys('密码')
#找到登录按钮标签
element3 = wd.find_element_by_id('loginButton')
#进行点击操作,登陆成功
element3.click()
#跳出这个iframe,切换到主页面
wd.switch_to.default_content()

#由于这个iframe中没有id和name属性,也不知道他的index,所以只能间接定位
iframe = wd.find_element_by_xpath('//div[@id="w1"]/iframe')
#找到后,就切换进去
wd.switch_to.frame(iframe)
#找到金额数标签
element5 = wd.find_element_by_xpath('//div/h3/p/span[@class="data_money"]')
#提取标签中的文本内容
str1 = element5.get_attribute('textContent')
wd.switch_to.default_content()
#由于含有其他内容,利用正则表达式只提取金额数
result = re.search('\d*\d\.\d\d', str1)
#用group(0)将result转换成字符串类型
print(result.group(0)+'元')

wd.quit()  #退出浏览器和驱动

你可能感兴趣的:(web自动化,selenium,python)