码迷,mamicode.com
首页 > 编程语言 > 详细

(selenium+python)_UI自动化03_定位新开窗口内元素

时间:2019-12-27 22:01:10      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:win   find   sage   一个   from   图片   get   bdr   自动化   

前言

浏览器点击web网站链接时,经常在当前窗口的基础上打开另一个新的窗口。如下:
技术图片

selenium定位新窗口元素,需要先切换到新窗口,再定位元素,否则会出现报错“NoSuchElementException: Message: no such element...”

定位新窗口元素

1,获得窗口句柄

driver.current_window_handle  # 获得当前窗口句柄

driver.window_handles  # 获得所有窗口句柄

2,切换至新窗口

all_pages = driver.window_handles  # 获得所有窗口句柄

driver.switch_to.window(all_pages[-1])  # 切换至最后一个窗口

3,定位元素

切换至新窗口后,正常定位元素即可

返回定位原有页面

1,切换回原有页面

all_pages = driver.window_handles  # 获得所有窗口句柄

driver.switch_to.window(all_pages[-1])  # 切换至最后一个窗口

2,定位元素

切换回原有窗口后,正常定位元素即可

实例

备注:以京东首页-打开我的订单窗口为实例

 1 # 京东定位新开窗元素实例
 2 from selenium import webdriver
 3 from time import sleep
 4 
 5 driver = webdriver.Chrome()
 6 driver.get(https://www.jd.com/)  #打开京东
 7 sleep(2)
 8 
 9 driver.find_element_by_xpath(//*[text()="我的订单"]).click()  # 点击我的订单
10 sleep(3)
11 
12 all_pages = driver.window_handles  # 获取所有窗口句柄
13 print("order page:", all_pages)
14 
15 driver.switch_to.window(all_pages[-1])  # 切换至我的订单窗口
16 bottom = driver.find_element_by_class_name("links").text  # 获得我的订单页-底栏文描
17 print("我的订单-底栏:", bottom)
18 driver.close()  # 关闭当前窗口-即我的订单页
19 
20 driver.switch_to.window(all_pages[0])
21 driver.find_element_by_xpath(//*[contains(text(),"优惠券")]).click() 

(selenium+python)_UI自动化03_定位新开窗口内元素

标签:win   find   sage   一个   from   图片   get   bdr   自动化   

原文地址:https://www.cnblogs.com/mini-monkey/p/12104821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!