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

问题描述

在做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 ,岂不是美滋滋?

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值