Selenium+python,在新的页面(新打开的web页面)上没法定位元素问题解决方案。

原创 2018年04月17日 09:49:58

问题描述

在做web端自动化时,因为页面涉及跨域的问题,所以重新打开了页面,但是在执行代码时,提示selenium.common.exceptions.NoSuchElementException 这就很奇怪了,明明是用ID的方式定位的,这么稳的定位方式找不到,肯定是因为打开了新页面的问题。

问题分析

在新开的页面中找不到元素,也就意味着当前操作范围变化了,也就是句柄可能出了问题,能操作的范围还在上一个页面中,所以要想办法到新开的页面去操作。

问题解决

既然是句柄有问题,那就首先考虑去看API文档,查看怎么操作句柄,最不济总有个查看句柄的办法。果然webdriver给我们提供了driver.window_handles 来查看句柄。好那先输出一波

num = init.d.window_handles # 获取当前页句柄
print(num)

输出的结果为

['4294967297', '4294967302']

也就意味着,我们当前在num[0]中进行操作,但是页面打开后,要在num[1]中查找元素,这当然就找不到,
不慌 ,问题不大,再找找API,看看有没有切换句柄的方式,肯定是有的。

driver.switch_to.window(num[1]) # 在句柄2 上执行下述步骤

好了,你现在就能再继续操作你的元素了。

第二种思路

既然页面都跳转了,那就最好再写多一个tesecase 保证用例的可复用性,那么这个时候就可以使用

def_test_2_**(self):
    driver.get('http://****/addbook')
    driver.find_element_by_id('subject21').click()

直接get后,相当于直接就结束了前一个页面的操作,重新进执行,然后执行新的testcase ,岂不是美滋滋?

版权声明:本文为博主原创文章,你开心就好。 https://blog.csdn.net/rp517045939/article/details/79970319

Web 前端工程师课程 第1周 (新)

Web 前端工程师课程(new) 第1周
  • 2017年11月06日 20:01

selenium打开新标签页无法定位到元素问题解决办法

解决办法:在针对“无法定位到的元素”进行操作之前,执行如下代码:num=driver.window_handles #获取当前页句柄 print(num) driver.switch_to_windo...
  • qq_40027987
  • qq_40027987
  • 2017-12-20 18:23:32
  • 291

WebDriver如何切换到新打开的窗口中

在WebDriver中经常会遇到点击某个元素后打开一个新的窗口,而下一步的操作yao...
  • zhangchaoy
  • zhangchaoy
  • 2014-06-16 11:06:20
  • 3844

如何找到新窗口并定位

貌似这个问题挺多,研究了一下,有以下心得(只讨论新窗口,同一个窗口可以用select_windows适用)。    Normal  0        7.8 磅  0  2    false  fa...
  • gzh0222
  • gzh0222
  • 2012-05-14 21:37:49
  • 3684

webdriver打开链接新页面

html例子:点击链接,代开51网站<html> <head><title>Test Popup Window&am...
  • chenxn001
  • chenxn001
  • 2014-06-30 10:28:23
  • 2158

python selenium 如何切换到链接新打开的窗口

再写ui自动化,顺便做个笔记 问题是:在打开监控大屏时,会弹出一个新的窗口,如何在这个新的窗口操作呢? 点击后,弹出下图 我要获取这个页面的元素 接下来的解决方案 思...
  • Test_Sir_Cao
  • Test_Sir_Cao
  • 2017-11-16 17:28:03
  • 621

web元素定位及操作()

单个元素定位: #coding=utf-8 from selenium import webdriver dr=webdriver.Opera() '''找元素 2???、前端工具是什么?se...
  • qq_37032193
  • qq_37032193
  • 2016-12-13 23:12:19
  • 642

python + selenium + chrome 如何打开新窗口,并实现窗口切换

python + selenium + chrome 如何打开新窗口,并实现窗口切换 1. 背景 在使用selenium时,经常会有打开一个新的窗口的需求,下面会提供几种窗口切换的思路。 ...
  • zwq912318834
  • zwq912318834
  • 2018-01-30 16:15:14
  • 1521

selenium中webdriver打开新页面无法获取页面元素

当我们使用selenium 抓取数据时候首先我们要明白问题出在哪里?在新打开页面,我们无法获取元素,是因为 句柄 不在当前打开页面,我们需要做的是将 句柄 移动到当前页面就ok 了我们以智联招聘为例...
  • EB_NUM
  • EB_NUM
  • 2017-08-01 16:01:22
  • 2192

robotframework实现在浏览器tab页中打开一个新的窗口

问题背景:利用robotframework在写自动化脚本的时候, 有些场景下需要新建一个浏览器窗口,但是又需要共享原窗口的session,这时候只需要在浏览中新打开一个tab页就可以,脚本如下: ...
  • haiweizhourong
  • haiweizhourong
  • 2017-03-29 21:25:04
  • 2763
收藏助手
不良信息举报
您举报文章:Selenium+python,在新的页面(新打开的web页面)上没法定位元素问题解决方案。
举报原因:
原因补充:

(最多只允许输入30个字)