python selenium-webdriver 标签页切换(十四)

  测试过程中有时候会遇到点击某个按钮或者链接会弹出新的窗口,这时候我们的操作的页面还保持着最初打开页面,但是此时我们需要操作新打开的页面上的功能,这个时候我们需要切换一下标签页 。

  其实页面的切换与frame的切换比较相识,一种切换时本页面内frame的操作,而标签页面是多页面的操作,道理很相似。下面讲解下操作页面标签会涉及到那些方法。

  • driver.current_window_handle                         #获取当前窗口的句柄
  • driver.window_handles                                    #获取所有窗口句柄
  • driver.switch_to_window(windowName)               #切换窗口的句柄

  窗口的切换比较容易,所以我们通过代码详细了解下页面如何切换

import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(‘https://www.baidu.com‘)
driver.maximize_window()
driver.find_element_by_id(‘kw‘).send_keys(u‘梦雨情殇‘)  #搜索“梦雨情殇的博客”
now_handle = driver.current_window_handle   #获取当前窗口的句柄
print(now_handle)  #打印当前窗口的句柄
print(driver.title)  #获取打开页面的标题
driver.find_element_by_id(‘su‘).click()
time.sleep(2)
driver.find_element_by_xpath(‘//*[@id="1"]/h3/a‘).click()  #点击第一条查询的数据
all_handles = driver.window_handles   #获取到当前所有的句柄,所有的句柄存放在列表当中
print(all_handles)  #打印句柄
‘‘‘获取非最初打开页面的句柄‘‘‘
for handles in all_handles:
    if now_handle != handles:
        driver.switch_to_window(handles)
print(driver.title)  #获取切换后的标题
time.sleep(3)
driver.quit()

效果:

从例子中我们看到无论我们打开几个页面,但是默认的句柄依然保持在最初打开的页面,如果想要操作后面的页面的时候我们首先需要获取到当前所有的打开页面的句柄,然后在遍历选择你需要的句柄,打开标签页顺序也就是列表存放的index顺序,然后我们按照索引选择,最后在切换到对应的页面。最重要的是操作完成对应的页面一定要切换回最初的标签页,然后通过最初的页面进行切换,这边避免最后自己也不知道在操作那个页面,这个是自己的一点的经验吧。

时间: 2024-08-28 04:23:22

python selenium-webdriver 标签页切换(十四)的相关文章

python+selenium webdriver 自动化测试(一)

作为一个刚刚接触python,第一次编程,第一次试着去做自动化的小渣渣,借此地来见证自己的进步,也许每一步对于别人来说微不足道, 但是对于自己来说,是无数次思考之后才能迈出的一步,很吃力,也同样很欣慰.废话不多说,进入主题. 我用的是python+selenium webdriver来搭建自动化框架,对于python语言,不熟悉,只是粗略的看了一遍书,不知道该编什么,也不知道怎么编,请教大牛后,直接上路,不纠结,实战中可以学会更多.推荐一本书,虫师的<selenium webdriver (py

Python Selenium Webdriver常用方法总结

常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: maximize_window() 设置窗口参数:set_window_size(600,800) 后退到前一页: back() 前进到后一页: forward() 刷新页面: refresh() 元素定位: id定位:find_element_by_id() name定位:find_element_by_name() class定位:find_element_b

Python+selenium+eclipse执行web自动化(四)控件处理

元素定位后可根据页面元素的类型执行相关操作,一下使用element指代已定位的页面元素 1.输入框 包括文本输入框和密码输入框,可用操作有clear()和send_keys(),具体用法如下 element.clear()     #清空输入框当前内容element.send_keys("string") #项输入框发送字符串 2.单选框及复选框 可用操作有is_select()和click(),具体用法如下element.is_selected()   #判断当前选择控件是否被选中

python+selenium webdriver 如何处理table

Table对象是自动化测试中经常需要处理的对象.由于webdriver中没有专门的table类,所以我们需要简单的封装出一个易用易扩展的Table类来帮助简化代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

web前端中实现多标签页切换的效果

在这里,实现多标签页效果的方法有两个,一个是基于DOM的,另一个是基于jquery的,此次我写的是一个对于一个电话套餐的不同,显示不同的标签页 方法一: 首先,我们要把页面的大体框架和样式写出来,html和css代码如下: <ul id="tab">    <li id="tab1" onclick="show(1)">10元套餐</li>    <li id="tab2" oncli

用Python selenium+webdriver的一个简单的登录自动化测试--豆丁网登录测试

#coding=utf-8 from selenium import webdriver #from selenium.webdriver.remote import switch_to #from selenium.webdriver.common import alert #import unittest  import time,os def users_zidian():  #用户名用例用一个字典实现参数化调用#     users={'zhengshuheng':'123456','[

python selenium webdriver处理浏览器滚动条

用键盘右下角的UP,DOWN按键来处理页面滚动条 这种方法很灵活用起来很方便!!!! from selenium import webdriver import time from selenium.webdriver.common.keys import Keys #访问百度 driver=webdriver.Chrome() driver.get("http://www.baidu.com") #搜索 driver.find_element_by_id("kw"

vue单页面条件下添加类似浏览器的标签页切换功能

在用vue开发的时候,单页面应用程序,而又有标签页这种需求,各种方式实现不了, 从这个 到这个,然后再返回上面那个 因为每个标签页的route不一样,导致组件重新渲染的问题,怎么都不知道如何实现......... 简直郁闷到爆炸,后来和同学谈起的时候,说起生命周期这个才恍然大悟, 对于vue的生命周期,因为用的少,本身多用的是created,mounted这两个,都忘记beforeDestroy这些了,然后抓瞎了好久 实现方式是 每次销毁组件之前   缓存数据    能够用到的是 this.$d

python+selenium—webdriver入门(一)

一.浏览器最大化 二.设置浏览器分辨率大小 三.打印页面title 四.打印URL 五.控制浏览器前进或后退 #!/usr/bin/env python#-*- coding:utf-8 -*- from selenium import webdriverimport time browser = webdriver.Firefox() #浏览器最大化 browser.maximize_window() #设置浏览器分辨率大小browser.set_window_size(800,600) #访