问题背景:在项目实践过程中有这样一种情况:

1…A页面上点击按钮,打开新的页面B

2.B页面上填入数据,完成后会自动关闭B页面

3.如果B页面上的数据需要做参数化,那么必须采用循环不停的点击A页面上的按钮、switch_to_window到B页面、再switch_to_window到A页面

实现步骤:1.A页面点击按钮后,用window_handles保存所有的窗口句柄,此时列表有两个元素

2.切换到B页面,采用switch_to_window[1],即窗口句柄列表的最后一个

3.在B页面输入相关数据并确定

发现问题:在循环参数化的过程中,有时会在实现步骤的第3步找不到相关元素,导致脚本报错。经过调试发现,一般情况下在保存窗口句柄列表时是和打开页面

的顺序是一致的,但此次报错时的顺序发生了变化,B页面的窗口句柄跑到了前面,所以实际上是根本没有switch_to_window到B页面,所以实现

步骤的第3步找不到相关元素

问题解决:碰到这个问题的时候,实际是实现步骤的第2步存在问题,那怎么解决呢,经过思考,解决思路如下:

1.A页面打开时,window_handles保存所有的窗口句柄 listA【一个元素】

2.b页面打开后,window_handles再保存一次所有的窗口句柄 listAB【两个元素】

3.listAB、listA这两个列表中会有一个元素是重复的,那就是A窗口的窗口句柄,那么listAB去掉这两个列表中重复的元素,剩下的元素就是B窗口的

句柄,再通过列表的iindex方法得到B窗口句柄在listAB的索引,填入实现步骤的第二步即可

4.剩下的问题就转化成了listAB、listA去掉重复的问题,也就是Python列表操作的问题

5.为此写了一个函数,接收两个参数,即listA,listAB,可以得到去重后的窗口句柄对应的索引

def tag_window(listA_win,listAB_win):
         for i in listAB_win:
          if i not in listA_win:
           return listAB_win.index(i)

Selenium_Python实践遇到的问题一:页面存在多窗口时,window_handles属性在保存窗口句柄列表时的顺序不一定和打开页面的顺序一致相关推荐

  1. 【Axure技巧】Axure RP 9 生成HTML文档如何自动打开页面列表?

    前言 自从由Axure RP 8 升级到 RP 9 后,遇到了许多不习惯的操作,比如预览HTML时的页面列表,在RP 8中是默认打开的,来到RP 9 变成了默认隐藏的了,需要手动设置一下才会自动打开( ...

  2. vue是用a标签打开新页面_vue 在新窗口打开页面并设置不同的背景

    开发一个新系统,前端用的vue,vue是单体应用,所有页面都在一个窗口里实现,但项目要求在点button链接后要新打开一个浏览器页面,解决方法如下: 1. 给此button设置新事件 @click=& ...

  3. 【问题解决】移动端rem适配的时候会出现打开页面时先缩小(放大)后恢复到正常页面的问题

    [问题解决]移动端rem适配的时候会出现打开页面时先缩小(放大)后恢复到正常页面的问题 参考文章: (1)[问题解决]移动端rem适配的时候会出现打开页面时先缩小(放大)后恢复到正常页面的问题 (2) ...

  4. dns-prefetch,新打开页面预抓取

    dns-prefetch 对性能提升有多大 转载2016-04-07 12:57:41 标签:网站推广dns-prefetch对性能提 dns-prefetch, 是DNS预获取,也是网页前端的优化的 ...

  5. html 打开页面光标自动选中输入框_初识selenium之web自动化

    今天我们学习下如何使用python编写web自动化,谈到web自动化,那么我们需要了解下市面上做web自动化的几种方式,Robotframework工具,网红WebUI自动化测试神器 - Cypres ...

  6. java 新窗口跳转页面_Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开...

    最近学习Java web,在学习过程中想实现一个需求,就是在jsp页面跳转的时候,希望跳转后的新页面在新窗口中打开, 而不是覆盖原来的页面,这个需求使我困惑了好长时间,后来通过大海捞针似的在网上寻找方 ...

  7. 【小程序】当前“页面B”动态更改title,点击返回按钮,更改的标题会显示在“来源页面A”...

    最近在做小程序的时候遇到这么一个有趣的问题,就是从A页面跳转到B页面,如果B页面需要在接口加载之后更改title, 并且如果接口请求过慢,还灭有请求完毕时就点击返回按钮回到A页面,这时B页面的请求会继 ...

  8. idea中浏览器打开页面404_深圳网站建设中的404页面有什么用

    通常我们访问网站时,遇到404页面会让人很扫兴,想想正在兴致勃勃的看新闻.找资料.看视频等等,突然出现一个巨大的404,告诉你找的东西不存在,是不是有种想砸键盘的冲动? 可偏偏有很多404页面让你看到 ...

  9. FCKEditor 打开页面总是得到焦点问题处理 FCKConfig.StartupFocus=false;

    fckconfig.js 配置文件中的 "FCKConfig.StartupFocus=false;"设置,在FCKEditor编辑器在新窗口中打开是有效的,但是如果FCKEdit ...

最新文章

  1. js中substring和substr的用法
  2. A value-added tax (VAT) IN UK
  3. 8个你应该了解的正则表达式
  4. Python3 拼接符+和join效率对比测试
  5. day22-面向对象之封装
  6. mysql数据备份(windows,linux)
  7. 修复Winsock(转)
  8. LINQ to SQL之使用Lambda Expression批量删除数据
  9. 新人如何使用git加入到团队开发中
  10. C/C++ 飞机订票系统
  11. xdg在Linux中的用法,linux – 如何使用xdg-mime命令 - 程序园
  12. shel脚本基础系列(二)语法+运算+判断
  13. 为什么说90%以上的创业者都在亏钱?
  14. php 九宫格验证码,PHP+Ajax微信手机端九宫格抽奖实例
  15. 【2019南昌邀请赛现场赛 - G】Winner(思维、图论+缩点)
  16. 用matlab画一些骚东西,求助matlab大神,学校的课程安排太骚了,我们压根就不用学matlab...
  17. 端口号被占用:The Tomcat connector configured to listen on port “端口号“ failed to start.
  18. 音频处理工具 sox 使用
  19. svg标记marker
  20. 计算机专业3分钟演讲能讲什么,面试三分钟演讲稿范文

热门文章

  1. 计算机的硬件组成(详)
  2. 飞阳物联平台开源项目导航
  3. 给理工男女的一个神奇网站!
  4. html icon 引入emoji,给自己网站增加Emoji表情图标(可以在百度显示类
  5. 笔记本电源就断网,不接电源正常
  6. 由于计算机主板的闪存中固化了,主板bios内存设置
  7. GitHub标星10.8K!快速搭建私人网盘
  8. with torch.no_grad()
  9. 深入理解计算机系统---程序运行过程
  10. 百度php主动推送每天,百度主动推送(实时)制作 简单3步轻松完成