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

2023-11-23 20:20

本文主要是介绍SJW-遍历我的账户左侧导航页面(句柄切换),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 页面信息类似如下:

定位页面元素:

 

import time
from selenium import webdriver
# import os
#A
#username = "18200717002" # 请替换成你的用户名
#B
username = "18200717087" # 请替换成你的用户名
#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 = "18200717087" # 请替换成你的用户名
#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()

 

转载于:https://www.cnblogs.com/jpr-ok/p/10334544.html

这篇关于SJW-遍历我的账户左侧导航页面(句柄切换)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/420478

相关文章

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

SpringBoot如何访问jsp页面

《SpringBoot如何访问jsp页面》本文介绍了如何在SpringBoot项目中进行Web开发,包括创建项目、配置文件、添加依赖、控制层修改、测试效果以及在IDEA中进行配置的详细步骤... 目录SpringBoot如何访问JSP页python面简介实现步骤1. 首先创建的项目一定要是web项目2. 在