SJW-遍历我的账户左侧导航页面(句柄切换)


页面信息类似如下:

定位页面元素:
import time
from selenium import webdriver
# import os
#A
#username = "18200717002" # 请替换成你的用户名
#B
username = "" # 请替换成你的用户名
#C
#username = "18200718101" # 请替换成你的用户名
password = "123456Aa" # 请替换成你的密码
code = 121
#driver = webdriver.Chrome() # 选择Chrome浏览器或者用下面的浏览器,看心情
driver = webdriver.Firefox()
#A
#driver.get('http://121.43.72.3:8086/systLogonUser/login.do') # 打首金网登录页面
#B
driver.get('http://118.178.---.--:8081/systLogonUser/login.do') # 打首金网登录页面
#C
#driver.get('http://10.253.125.38:8081/systLogonUser/login.do') # 打首金网登录页面
# time.sleep(1) #找到用户名输入框点击获取焦点并输入信息
driver.find_element_by_id('userName').click()
driver.find_element_by_id('userName').send_keys(username) #找到密码输入框点击获取焦点并输入信息
driver.find_element_by_id('pwd').click()
driver.find_element_by_id('pwd').send_keys(password) # 找到图形验证码输入框点击获取焦点输入信息
driver.find_element_by_id('verifyCode').click()
driver.find_element_by_id('verifyCode').send_keys(code) # 找到登录按钮点击
driver.find_element_by_id('login').click()
time.sleep(1) # 找到签到点击完成签到
# driver.find_element_by_class_name('signIn').click() # driver.close() # 这些是网站中定位到的元素
# userName
# pwd
# verifyCode
# login
#定位“我的账户”左侧列表
'''
“我的账户”页面左侧导航列表页面
资产管理:智享专区,散标专区,转让专区,定向认购
交易管理:交易管理,资金记录,回款日历
账户管理:账户设置,银行卡,个人信息,站内消息
资金管理:我要充值,我要提现
奖励管理:我的福利,邀请好友
'''
#资产管理:智享专区,散标专区,转让专区,定向认购 driver.find_element_by_partial_link_text('智享专区').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) driver.find_element_by_partial_link_text('散标专区').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) driver.find_element_by_partial_link_text('转让专区').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) driver.find_element_by_partial_link_text('定向认购').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3)
# 交易管理:交易管理,资金记录,回款日历
driver.find_element_by_partial_link_text('交易明细').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) driver.find_element_by_partial_link_text('资金记录').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) driver.find_element_by_partial_link_text('回款日历').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) # 账户管理:账户设置,银行卡,个人信息,站内消息
driver.find_element_by_partial_link_text('账户设置').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) driver.find_element_by_partial_link_text('银行卡').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) driver.find_element_by_partial_link_text('个人信息').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) driver.find_element_by_partial_link_text('站内消息').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) # 资金管理:我要充值,我要提现
driver.find_element_by_partial_link_text('我的账户').click()
driver.find_element_by_partial_link_text('我要充值').click()
time.sleep(3) windows = driver.window_handles
driver.switch_to_window(windows[1]) #"我要充值"新打开页面的句柄为1
driver.close() driver.switch_to_window(windows[0])#切换回"我的账户"页面的句柄为0
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3)
# 资金管理:我要提现
driver.find_element_by_partial_link_text('我要提现').click()
time.sleep(3) windows = driver.window_handles
driver.switch_to_window(windows[1])
driver.close() # 奖励管理:我的福利,邀请好友
driver.switch_to_window(windows[0])
driver.find_element_by_partial_link_text('我的福利').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3) driver.find_element_by_partial_link_text('邀请好友').click()
time.sleep(3)
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3)
driver.close()
遇到的问题及解决:
“资金管理”中“我要充值、我要提现”点击时回打开一个新的页面,操作完毕后关闭打开的新页面,切换至原页面再进行操作,涉及句柄切换
如果打开一个网页后,从该网页点击一个链接打开,该链接网页以新标签页打开,此时添加下图所示第一行代码,可以获得当前两个网页句柄,原网页为句柄0,新网页为句柄1,第二行代码将网页置为句柄为1的新网页,此时可以操作句柄为1的新网页,只要接着下图所示两行代码,编写网页操作代码,都是针对新网页的操作。
windows = driver.window_handles
driver.switch_to_window(windows[1]) #切换到新页面
此时即可操作新网页,如果输入下图所示代码,会关闭新网页,如果没有输入以上所示代码,直接输入下图所示命令,则会关闭原网页,而且不能操作新网页,所以需要进行页面句柄切换。
driver.close()
而如果是打开多个网页。首先打开网页1,再点击网页1上一个链接,在新窗口打开新网页2,同理点击新网页2上一个链接,新窗口打开新网页3等等,这是按打开顺序为网页编号。实际网页对应句柄如下图所示,即第一个打开网页一直是句柄0,而最新打开的网页记为句柄1,依次序编号。

输入下图所示代码,其中i设置为需要操作网页的句柄号,即可对该句柄网页进行操作,最后操作完毕,输入“driver.close()”即可关闭该句柄网页。
注意的是只要不输入下图所示代码,重新获得当前所有已打开网页句柄,任何句柄网页关闭后,其他网页句柄号不变,可以直接输入原有句柄进行网页操作。
windows = driver.window_handles
最后,假如打开了6个网页,关闭了其中5个,想保留一个网页进行操作,且该网页句柄为句柄5,此时一定要输入下图所示命令,将当前页面操作置为句柄为5的网页,并不是关闭了其他网页,软件会自动将可操作网页设置为唯一剩下的网页,需要加入代码,指定软件进行切换。
driver.switch_to_window(windows[5]) #切换到句柄为5新页面
例如,资金管理中的提现、充值点击后就是打开的新页面,具体完整实现代码见下
import time
from selenium import webdriver
# import os
#A
#username = "18200717002" # 请替换成你的用户名
#B
username = "" # 请替换成你的用户名
#C
#username = "18200718101" # 请替换成你的用户名
password = "123456Aa" # 请替换成你的密码
code = 121
#driver = webdriver.Chrome() # 选择Chrome浏览器或者用下面的浏览器,看心情
driver = webdriver.Firefox()
#A
#driver.get('http://121.43.72.3:8086/systLogonUser/login.do') # 打首金网登录页面
#B
driver.get('http://118.178.---.--:8081/systLogonUser/login.do') # 打首金网登录页面
#C
#driver.get('http://10.253.125.38:8081/systLogonUser/login.do') # 打首金网登录页面
# time.sleep(1) #找到用户名输入框点击获取焦点并输入信息
driver.find_element_by_id('userName').click()
driver.find_element_by_id('userName').send_keys(username) #找到密码输入框点击获取焦点并输入信息
driver.find_element_by_id('pwd').click()
driver.find_element_by_id('pwd').send_keys(password) # 找到图形验证码输入框点击获取焦点输入信息
driver.find_element_by_id('verifyCode').click()
driver.find_element_by_id('verifyCode').send_keys(code) # 找到登录按钮点击
driver.find_element_by_id('login').click()
time.sleep(1) # 找到签到点击完成签到
# driver.find_element_by_class_name('signIn').click() # driver.close() # 这些是网站中定位到的元素
# userName
# pwd
# verifyCode
# login
#定位“我的账户”左侧列表
'''
“我的账户”页面左侧导航列表页面
资金管理:我要充值,我要提现;会打开新的页面
'''
# 资金管理:我要充值
driver.find_element_by_partial_link_text('我的账户').click()
driver.find_element_by_partial_link_text('我要充值').click()
time.sleep(3) windows = driver.window_handles
driver.switch_to_window(windows[1]) #"我要充值"新打开页面的句柄为1
driver.close() driver.switch_to_window(windows[0])#切换回"我的账户"页面的句柄为0
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3)
# 资金管理:我要提现
driver.find_element_by_partial_link_text('我要提现').click()
time.sleep(3) windows = driver.window_handles
driver.switch_to_window(windows[1])
driver.close() driver.switch_to_window(windows[0])
driver.find_element_by_partial_link_text('我的账户').click()
time.sleep(3)
driver.close()
SJW-遍历我的账户左侧导航页面(句柄切换)的更多相关文章
- JS实现静态html页面左侧导航,右侧连接页面
本人前端小菜,想实现左侧导航固定,右侧链接页面,不想用iframe,请问各位有什么好的建议,最好有个demo,谢谢
- [转]layui点击左侧导航栏,实现不刷新整个页面,只刷新局部
本文转自:https://blog.csdn.net/s31415926_004/article/details/84256587 其实这篇文章是给自己看的,以后忘记怎么做回来还能看一下哈哈哈哈哈哈哈 ...
- 简单的jquery左侧导航栏和页面选中
这里是要实现导航的左侧并选中的,此功能需引用jquery 左侧导航: <div class="box"> <ul class="menu"&g ...
- 简单的jquery左侧导航栏和页面选中效果
这里是要实现导航的左侧并选中的,此功能需引用jquery 效果: 左侧导航 <div class="box"> <ul class="menu" ...
- react-router-dom 实现左侧导航
1.介绍react-router-dom https://reacttraining.com/react-router/web/example/basic 这个官网有很多栗子可以练手 1.1 Hash ...
- jquery模板制作左侧导航组件
/** * Created by bmk on 16-4-25. * * 用法:在自己的js里面把左侧导航的相关图标和对应的列表项名称如下编写: * 版本更新日至按需添加 * 在js中的RNA.run ...
- ElementUI+命名视图实现复杂顶部和左侧导航栏
在了解了命名视图的用途后,发现用命名视图来实现复杂导航更加省力.更多知识请参考这里 这里只说明重要配置内容,其他内容配置请参考上一篇初始版本: ElementUI 复杂顶部和左侧导航栏实现 或参考文末 ...
- ElementUI 复杂顶部和左侧导航栏实现
描述:如图 项目路径如下图所示: 代码实现: 首先在store.js中添加两个状态: import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vue ...
- 基于bootstrap3.3.4的简单框架搭建(左侧导航收起滚动)
前提:博主本人做.net方向的2年多了 去年的后半年公司要做基于bootstrap框架的后台,由于没有经验,然后跟公司美工一块从0开始折腾,对这个框架不是太熟悉,然后就开始各种自己写js写css的往里 ...
随机推荐
- 在AJAX里 使用【 XML 】 返回数据类型 实现简单的下拉菜单数据
在AJAX里 使用XML返回数据类型 实现简单的下拉菜单数据 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- 堆的C语言实现
在C++中,可以通过std::priority_queue来使用堆. 堆的C语言实现: heap.c /** @file heap.c * @brief 堆,默认为小根堆,即堆顶为最小. */ #in ...
- myspl数据库基础
mysql数据库sql 语句大全收录---sql语句不区分大小写 启动/停止 net start mysql net stop mysql 用户登录 mysql -uroot -p ...
- PAT甲级1013-1014-1015
题目:1013 Battle Over Cities 思路:城市数也就1000, 对于每次询问暴力bfs一下看一下有多少连通块就行了.答案就是联通块数减一. #include<stdio.h&g ...
- 线段树||BZOJ1593: [Usaco2008 Feb]Hotel 旅馆||Luogu P2894 [USACO08FEB]酒店Hotel
题面:P2894 [USACO08FEB]酒店Hotel 题解:和基础的线段树操作差别不是很大,就是在传统的线段树基础上多维护一段区间最长的合法前驱(h_),最长合法后驱(t_),一段中最长的合法区间 ...
- .NET Core开发日志——HttpClientFactory
当需要向某特定URL地址发送HTTP请求并得到相应响应时,通常会用到HttpClient类.该类包含了众多有用的方法,可以满足绝大多数的需求.但是如果对其使用不当时,可能会出现意想不到的事情. 博客园 ...
- Codeforces 670E - Correct Bracket Sequence Editor - [链表]
题目链接:https://codeforces.com/contest/670/problem/E 题意: 给出一个已经匹配的括号串,给出起始的光标位置(光标总是指向某个括号). 有如下操作: 1.往 ...
- [No0000116]SQLServer启用sa账户
SQLServer如何启用sa账户,今天在这里唠叨一下关于SQL Server数据库如何启用sa账户的,作为一个数据库管理者,需要非常熟练掌握,具体步骤如下: 1.先登录数据库服务 首先在“开始”菜单 ...
- hive进行词频统计
统计文件信息: $ /opt/cdh-5.3.6/hadoop-2.5.0/bin/hdfs dfs -text /user/hadoop/wordcount/input/wc.input hadoo ...
- php 之数组
PHP之array数组 PHP中的数组实际上是一个有序映射.映射是一种把values关联到keys的类型.此类型在很多方面做了优化, 因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实 ...