zoukankan      html  css  js  c++  java
  • (selenium+python)_UI自动化03_定位新开窗口内元素

    前言

    浏览器点击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() 
  • 相关阅读:
    JavaScript 高级
    JavaScript 归纳
    完全二叉树, 最大堆 , 堆排序
    二叉树
    Java秒杀系统方案优化 高性能高并发实战(1)
    精选 SQL 脚本
    树形结构有关的SQL
    在Sql server数据库中,关于触发器的创建、调用及删除
    SQLServer 唯一键约束和唯一索引有什么区别?
    很不错的 VBA 网址
  • 原文地址:https://www.cnblogs.com/mini-monkey/p/12104821.html
Copyright © 2011-2022 走看看