解决:在自动化测试中定位到新打开的窗口的元素问题

2023-11-08

原始代码:

 time.sleep(3)
        self.driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click()
        time.sleep(2)

        log.info("点击qq账号登陆")
        self.driver.find_element_by_xpath('//*[@id="pass_phoenix_btn"]/ul/li[1]/a').click()
        log.info("跳转到qq登陆界面")
        time.sleep(2)

        
        log.info('定位qq账号')
        self.driver.find_element_by_id('ptlogin_iframe').click()
        time.sleep(2)

        
        log.info('定位登录按钮')
        self.driver.switch_to_window(self.driver.window_handles[1])
        self.driver.find_element_by_id('login').click()

        log.info('账号密码登陆')
        self.driver.find_element_by_id('switcher_plogin').click()

错误提示:

Traceback (most recent call last):

File "D:\python\p\lib\unittest\case.py", line 59, in testPartExecutor yield

File "D:\python\p\lib\unittest\case.py", line 615, in run testMethod()

File "F:\unittest\pandabus_unittest\pandabus_unittest\testcase\test_login_baidu.py", line 107, in test_loginBtn self.driver.find_element_by_id('switcher_plogin').click()

File "D:\python\p\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 360, in find_element_by_id return self.find_element(by=By.ID, value=id_)

File "D:\python\p\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element 'value': value})['value']

File "D:\python\p\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute self.error_handler.check_response(response)

File "D:\python\p\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace)

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"switcher_plogin"} (Session info: chrome=74.0.3729.108) (Driver info: chromedriver=2.43.600210 (68dcf5eebde37173d4027fa8635e332711d2874a),platform=Windows NT 6.1.7601 SP1 x86_64)

解决问题:

修改后的代码:

# 定位并点击登录按钮
        log.info('定位并点击登录按钮')
        self.driver.find_element_by_xpath('//*[@id="u1"]/a[7]').click()
        log.info('点击登录按钮')
        time.sleep(3)
        self.driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click()

        time.sleep(2)
        log.info("点击qq账号登陆")
        self.driver.find_element_by_xpath('//*[@id="pass_phoenix_btn"]/ul/li[1]/a').click()
        log.info("跳转到qq登陆界面")
        time.sleep(2)

        windows=self.driver.window_handles  # 此行代码用来定位新窗口
        self.driver.switch_to.window(windows[1])

        time.sleep(5)
        log.info('定位qq账号')
        self.driver.find_element_by_id('ptlogin_iframe').click()
        log.info('qq窗口最大化')
        self.driver.maximize_window()

问题分析:

自动化登录之后,我想直接进行对qq账号的定位,但是利用元素定位的方法,怎么都找不到元素,其实,只是窗口句柄还停留在上一个页面而已!对于新弹出的页面还没有定位!!!那怎么可能找得到在新页面的元素呢!!这是新手(我)犯下最大的错误,只顾于对元素方法的定位,却没有意识到页面发生跳转后的handles的变化。

解决方法窗口从定位:

windows=self.driver.window_handles  # 此行代码用来定位新窗口
self.driver.switch_to.window(windows[1])

者:browser.switch_to_window(browser.window_handles[1])

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决:在自动化测试中定位到新打开的窗口的元素问题 的相关文章

随机推荐

  • babel转译: es6转es5

    1 ECMAScipt和JavaScript的关系 96年javascript之父netscape 交给国际标准组织ECMA管理 ECMAScipt是javascript的一种规范 javascript是ECMAJavascript的一种实
  • 标定工具箱 OpenCalib: 自动驾驶多传感器的一个开源标定工具箱

    2022年5月30日上传arXiv的论文 OpenCalib A Multi sensor Calibration Toolbox for Autonomous Driving 作者来自商汤科技和上海AI实验室 准确的传感器标定是实现智能车
  • SpringBoot数据库密码动态配置

    一般的开发 我们都习惯把数据库密码配置在属性文件中 这样配置方便好用 但是缺点也是很明显的 这样配置的密码是静态的 明文的 一般都安全要求比较严格的公司 这些密码都会被统一管理 定期修改 我们需要动态获取密码 下面是结合SpringBoot
  • 功能升级,数据同步更便捷!场景化数据同步助您提效60%!

    在企业数仓建设初期 为了保障数字化转型的落地效果 需要提供充足的数据资源 除了基础的数据抽取 转换和加载等过程 数据的同步也是重要环节之一 数据同步常用于数仓ODS ADS层的建设 通过不同数据源的同步 保障数据的及时性和准确性 从而满足不
  • LeetCode 171. Excel 表列序号

    题目链接 https leetcode cn problems excel sheet column number 思路如下 类似于 26 26 26 进制转十进制 按权展开求和 C 代码如下 class Solution public i
  • mysql到底哪里错了#1054 - Unknown column '' in 'field list'

    和 是不同的两个符号 是字段名的的定界符 就是键盘上1左边那个符号 而 是单引号 是用在字符串上的的 所以后面的应该是 values 王柳 now 工人 注1 如果你的id是自增长 那就不能出现在语句中 应该是insert into tes
  • 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台

    基于Spring4 SpringMVC4 Mybatis3 Hibernate4 Junit4框架构建高性能企业级的部标GPS监控平台 开发企业级的部标GPS监控平台 投入的开发力量很大 开发周期也很长 选择主流的开发语言以及成熟的开源技术
  • 浅谈_(js逆向)基础必备知识

    加粗样式随着技术的发展 js逆向成为爬虫必不可少的必备技术 我这里只是浅谈一下 根据自己的经验来说的 大蛇勿喷 js逆向 你首先得懂函数吧 例子 function per x y return x y 比如这个函数 function他是声明
  • 领悟《信号与系统》之 采样定理

    采样定理 采样定理 一 采样定理结论 二 奈奎斯特间隔和频率计算公式及例题 三 信号自然采样 脉冲采样 四 信号理想采样 冲激采样 采样定理 连续时间信号也叫模拟信号 在一定条件之下 模拟信号可以用该信号在等时间间隔点上的值或样本来表示 且
  • [创业之路-58] :公司、老板、专业性,优先级如何排序?

    公司 老板 专业性的优先级顺序 并不是固定不变的 要因情形而定 大公司 大多数人都在为公司打工 县官不如现管 在这样的公司 优先级如下 老板 专业性 公司 初创公司 专制型 这种公司 老板具有前瞻性 大多数决策都是正确的 在这样的公司 老板
  • vue中使用vuedraggable实现嵌套多层拖拽排序功能

    前言 vue中实现嵌套多层拖拽功能 官网入口 https www npmjs com package vuedraggable 实现效果 拖动左侧调整一级的顺序 拖动右侧调整二级的顺序 实现步骤 这里使用了插件 vuedraggable 第
  • 可以实操的代码,却在Proteus无法正常运行,sprintf函数所造成的故障

    前言 1 昨天 接了一个写代码的单子 为了防止客户说我的代码有问题 所以就打算将代码放在Proteus上跑 为什么不是硬件上跑呢 因为我的硬件找不到了 2 因为我电脑安装的Proteus总是闪退 下载安装搞了很久没搞好 于是让朋友帮忙验证
  • stata基础--回归,画散点图,异质性分析

    利用stata的内部数据来进行回归 代码 sysuse auto sysuse dir 可以看到所有的数据 su price mpg foreign reg price mpg predict u residual 新变量u 每一个观测的残
  • Kafka详解

    目录 一 消息系统 1 点对点的消息系统 2 发布 订阅消息系统 二 Apache Kafka 简介 三 Apache Kafka基本原理 3 1 分布式和分区 distributed partitioned 3 2 副本 replicat
  • JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) 解决

    重启tomcat 后台出现JDWP Transport dt socket failed to initialize TRANSPORT INIT 510 错误 因为tomca开启了debug 而debug端口占用导致的问题 1 ERROR
  • 湖南文旅数据中心:湖南文旅数据早知道(9月10日)

    湖南文旅数据早知道 9月10日 星期四 省内文旅要闻 昆明文旅推介会在长沙举行 坚持公交优先 湖南122个县市区全面实现交通一卡通互联互通 湖南雪峰启动消费扶贫 文旅产品引领乡村振兴 国内文旅要闻 国内旅游宣传推广典型案例名单发布 中秋国庆
  • Python3中 pyecharts.charts库可视化词云图--《你的答案》的歌词!

    Python3中 pyecharts charts库可视化词云图 你的答案 的歌词 可视化歌曲 你的答案 的歌词 词频自己设计 Project filename PythonDemo WordCount IDE PyCharm Author
  • js判断数组中是否存在某个属性或者对象

    骑士李四记录 场景一 对数组去重 1 判断是否存在字段 可以对数组去重 var arr 1 2 3 4 arr indexOf 3 2 arr indexOf 5 1 应用 去重 var list for let str of arr if
  • 算法岗面试题.收集

    收集一下算法岗面试题 后续将对问题进行自己的解答 蔚来感知算法岗面试题 1 用C 手写NMS 2 从模型和数据的角度分别说明如何解决梯度爆炸的问题 3 Faster R CNN的流程 两阶段主要解决了什么问题 4 YOLO中是怎么解决正负样
  • 解决:在自动化测试中定位到新打开的窗口的元素问题

    原始代码 time sleep 3 self driver find element by id TANGRAM PSP 10 footerULoginBtn click time sleep 2 log info 点击qq账号登陆 sel