精华内容
下载资源
问答
  • Selenium的窗口的切换中,我们遇到的两个窗口之间的切换比较。但是,实际的测试过程,我们可能会遇到3个或者更的窗口之间的相互切换、关闭等操作。 方法一:利用for循环来实现窗口之前的切换。 示例代码: ...

    在Selenium的窗口的切换中,我们遇到的两个窗口之间的切换比较多。但是,在实际的测试过程,我们可能会遇到3个或者更多的窗口之间的相互切换、关闭等操作。

    方法一:利用for循环来实现窗口之前的切换。

    示例代码:

    package com.sandy;
    
    import java.io.File;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.List;
    import java.util.Set;
    
    import org.apache.commons.io.FileUtils;
    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.OutputType;
    import org.openqa.selenium.TakesScreenshot;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.support.ui.ExpectedCondition;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    public class ManyHandleChange {
    	private static WebDriver driver;
    	public static void main(String[] args) throws Exception {
    		System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe");
    		driver = new ChromeDriver();
    		
    		driver.get("http://www.baidu.com/");  //打开百度首页
    		String window_one = driver.getWindowHandle();
    		Thread.sleep(2000);
    		
    		((JavascriptExecutor)driver).executeScript("window.open('http://www.sogou.com/')");  //用js打开新的窗口
    		Thread.sleep(2000);
    		
    		((JavascriptExecutor)driver).executeScript("window.open('http://www.youdao.com/')");  //用js打开新的窗口
    		Thread.sleep(2000);
    		
    		((JavascriptExecutor)driver).executeScript("window.open('http://www.qq.com/')");  //用js打开新的窗口
    		Thread.sleep(2000);
    		
    		Set<String> allWindow = driver.getWindowHandles();  //获取所有的窗口句柄
    		System.out.println(allWindow.size());  //输出句柄集合
    		
    		/**
    		 * 使用循环来实现窗口之间的相互切换、关闭
    		 */
    		for(String i:allWindow) {
    			if(i != window_one) {  //判断当前是否是第一个窗口
    				driver.switchTo().window(i);  //如果不是,则切换到当前窗口
    				System.out.println("成功切换到:" + driver.getTitle());  //为了证明确实切换了,打印一下窗口的title
    				Thread.sleep(2000);
    				/**
    				 * 截取当前窗口的图片并保存到指定文件夹中
    				 */
    				SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");  //设置时间格式
    				String time = dateFormat.format(Calendar.getInstance().getTime());  //获取当前时间
    				File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);  //执行屏幕截取
    				FileUtils.copyFile(srcFile, new File("snapshot", time+".png"));  //利用FileUtils工具类的copyFile()方法保存getScreenshotAs()返回的文件
    				driver.close();
    			}
    			Thread.sleep(2000);
    		}
    	}
    }
    


    运行结果:



    方法二:

    1、获取所有窗口的句柄并放入到set集合中

    2、把set集合放入到list对象中

    Note:在list中索引对应的窗口顺序是:第一个打开的窗口(百度)索引是0;其他窗口对应的索引顺序是:最后一个打开的窗口(腾讯)索引是1,剩余的窗口对应的索引依次是打开窗口顺序的倒序,即2是有道,3是搜狗

    3、通过list数组的索引使用switchTo()方法实现切换

    示例代码:

    package com.sandy;
    
    import java.io.File;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.List;
    import java.util.Set;
    
    import org.apache.commons.io.FileUtils;
    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.OutputType;
    import org.openqa.selenium.TakesScreenshot;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.support.ui.ExpectedCondition;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    public class ManyHandleChange {
    	private static WebDriver driver;
    	public static void main(String[] args) throws Exception {
    		System.setProperty("webdriver.chrome.driver", "E:\\eclipse_jar\\selenium_jar\\chromedriver.exe");
    		driver = new ChromeDriver();
    		
    		driver.get("http://www.baidu.com/");  //打开百度首页
    		String window_one = driver.getWindowHandle();
    		Thread.sleep(2000);
    		
    		((JavascriptExecutor)driver).executeScript("window.open('http://www.sogou.com/')");  //用js打开新的窗口
    		Thread.sleep(2000);
    		
    		((JavascriptExecutor)driver).executeScript("window.open('http://www.youdao.com/')");  //用js打开新的窗口
    		Thread.sleep(2000);
    		
    		((JavascriptExecutor)driver).executeScript("window.open('http://www.qq.com/')");  //用新浪打开新的窗口
    		Thread.sleep(2000);
    		
    		Set<String> allWindow = driver.getWindowHandles();  //获取所有的窗口句柄
    		List<String> it = new ArrayList<String>(allWindow);  //将set集合存入list对象中
    		System.out.println(allWindow.size());  //输出句柄集合
    		
    		//通过list的索引切换窗口
    		driver.switchTo().window(it.get(3));
    		String title = driver.getTitle();  //获取当前窗口的title
    		System.out.println("已切换到:" + title);  
    		Thread.sleep(500);
    		driver.close();  //关闭当前窗口
    		System.out.println(title + ":已经关闭!");
    		Thread.sleep(1000);
    		
    		driver.switchTo().window(it.get(2));
    		String title1 = driver.getTitle();  //获取当前窗口的title
    		System.out.println("已切换到::" + title1);
    		Thread.sleep(500);
    		driver.close();  //关闭当前窗口
    		System.out.println(title1 + ":已经关闭!");
    		Thread.sleep(1000);
    		
    		driver.switchTo().window(it.get(1));
    		String title2 = driver.getTitle();   //获取当前窗口的title
    		System.out.println("已切换到:" + title2);
    		Thread.sleep(500);
    		driver.close();  //关闭当前窗口
    		System.out.println(title2 + ":已经关闭!");
    		Thread.sleep(1000);
    		
    		driver.switchTo().window(it.get(0));
    		String title3 = driver.getTitle();   //获取当前窗口的title
    		System.out.println("已切换到:" + title3);
    		Thread.sleep(500);
    		driver.close();  //关闭当前窗口
    		System.out.println(title3 + ":已经关闭!");
    	}
    }
    


    运行结果:


    展开全文
  • selenium切换窗口几种方法小结

    万次阅读 多人点赞 2019-01-09 20:01:35
    打开多个窗口,需要定位到新打开的窗口; 使用方法: # 获取打开的多个窗口句柄 windows = driver.window_handles # 切换到当前最新打开的窗口 driver.switch_to.window(windows[-1]) 举例说明 # _._ coding:utf-8 ...

    第一种方法

    使用场景

    打开多个窗口,需要定位到新打开的窗口;

    使用方法:

    # 获取打开的多个窗口句柄
    windows = driver.window_handles
    # 切换到当前最新打开的窗口
    driver.switch_to.window(windows[-1])
    
    举例说明
    # _._ coding:utf-8 _._
    from selenium import webdriver
    import time
    # 打开课工场网站主页【第一个窗口】
    driver = webdriver.Chrome()
    driver.get('http://www.kgc.cn/')
    driver.maximize_window()
    # 点击全部课程,进入课程库【第二个窗口】
    driver.find_element_by_link_text('全部课程').click()
    time.sleep(3)
    # 使用第一种方法切换浏览器【切换到第二个窗口】
    windows = driver.window_handles
    driver.switch_to.window(windows[-1])
    time.sleep(3)
    # 点击课程库中的某个课程,进入课程详情界面【在第二个窗口页面进行元素点击操作,来判断窗口是否切换成功】
    driver.find_element_by_xpath('//*[@id="yw1"]/ul/li[2]').click()
    time.sleep(3)
    # 关闭浏览器
    driver.quit()
    print('测试通过')
    

    第二种方法:

    使用场景:

    打开两个窗口,需要定位到新的窗口

    使用方法:

    # 获得打开的第一个窗口句柄
    window_1 = driver.current_window_handle
    # 获得打开的所有的窗口句柄
    windows = driver.window_handles
    # 切换到最新的窗口
    for current_window in windows:
     if current_window != window_1:
      driver.switch_to.window(current_window)
    
    举例说明
    # _._ coding:utf-8 _._
    from selenium import webdriver
    import time
    from selenium import webdriver
    import time
    # 打开课工场网站主页【第一个窗口】
    driver = webdriver.Chrome()
    driver.get('http://www.kgc.cn/')
    driver.maximize_window()
    # 点击全部课程,进入课程库【第二个窗口】
    driver.find_element_by_link_text('全部课程').click()
    time.sleep(3)
    # 使用第二种方法切换浏览器【切换到第二个窗口】
    window_1 = driver.current_window_handle
    windows = driver.window_handles
    for current_window in windows:
     if current_window != window_1:
      driver.switch_to.window(current_window)
    time.sleep(3)
    # 点击课程库中的某个课程,进入课程详情界面【在第二个窗口页面进行元素点击操作,来判断窗口是否切换成功】
    driver.find_element_by_xpath('//*[@id="yw1"]/ul/li[2]').click()
    time.sleep(3)
    # 关闭浏览器
    driver.quit()
    print('测试通过')
    

    两种方法的区别:

    1.第一种方法比较简单,能提升整体代码的性能;
    2.第二种方法是大家最常用的方法,比较容易理解;

    展开全文
  • python3 selenium 切换窗口几种方法

    万次阅读 2017-05-06 12:54:02
    打开多个窗口,需要定位到新打开的窗口 使用方法: # 获取打开的多个窗口句柄 windows = driver.window_handles # 切换到当前最新打开的窗口 driver.switch_to.window(windows[-1]) 举例说明: 1 # _._ ...

    第一种方法:

    使用场景:

    打开多个窗口,需要定位到新打开的窗口

    使用方法:

    # 获取打开的多个窗口句柄
    windows = driver.window_handles
    # 切换到当前最新打开的窗口
    driver.switch_to.window(windows[-1])

    举例说明:

     1 # _._ coding:utf-8 _._
     2 
     3 """
     4 :author: 花花测试
     5 :time: 2017.05.03
     6 :content: 使用第一种方法切换浏览器
     7 """
     8 
     9 from selenium import webdriver
    10 import time
    11 
    12 #   打开课工场网站主页【第一个窗口】
    13 driver = webdriver.Chrome()
    14 driver.get('http://www.kgc.cn/')
    15 driver.maximize_window()
    16 
    17 #   点击全部课程,进入课程库【第二个窗口】
    18 driver.find_element_by_link_text('全部课程').click()
    19 time.sleep(3)
    20 
    21 #   使用第一种方法切换浏览器【切换到第二个窗口】
    22 windows = driver.window_handles
    23 driver.switch_to.window(windows[-1])
    24 time.sleep(3)
    25 
    26 #   点击课程库中的某个课程,进入课程详情界面【在第二个窗口页面进行元素点击操作,来判断窗口是否切换成功】
    27 driver.find_element_by_xpath('//*[@id="yw1"]/ul/li[2]').click()
    28 time.sleep(3)
    29 
    30 #   关闭浏览器
    31 driver.quit()
    32 print('测试通过')

     

    第二种方法:

    使用场景:

    打开两个窗口,需要定位到新打开的窗口

    使用方法:

    # 获得打开的第一个窗口句柄
    window_1 = driver.current_window_handle
    # 获得打开的所有的窗口句柄
    windows = driver.window_handles
    # 切换到最新的窗口
    for current_window in windows:
        if current_window != window_1:
            driver.switch_to.window(current_window)

    举例说明:

     
    
     1 # _._ coding:utf-8 _._
     2 
     3 """
     4 :author: 花花测试
     5 :time: 2017.05.03
     6 :content: 使用第二种方法切换浏览器
     7 """
     8 
     9 from selenium import webdriver
    10 import time
    11 
    12 from selenium import webdriver
    13 import time
    14 
    15 #   打开课工场网站主页【第一个窗口】
    16 driver = webdriver.Chrome()
    17 driver.get('http://www.kgc.cn/')
    18 driver.maximize_window()
    19 
    20 #   点击全部课程,进入课程库【第二个窗口】
    21 driver.find_element_by_link_text('全部课程').click()
    22 time.sleep(3)
    23 
    24 #   使用第二种方法切换浏览器【切换到第二个窗口】
    25 window_1 = driver.current_window_handle
    26 windows = driver.window_handles
    27 for current_window in windows:
    28     if current_window != window_1:
    29         driver.switch_to.window(current_window)
    30 time.sleep(3)
    31 
    32 #   点击课程库中的某个课程,进入课程详情界面【在第二个窗口页面进行元素点击操作,来判断窗口是否切换成功】
    33 driver.find_element_by_xpath('//*[@id="yw1"]/ul/li[2]').click()
    34 time.sleep(3)
    35 
    36 #   关闭浏览器
    37 driver.quit()
    38 print('测试通过')
     
    
    两种方法的区别:
    1、第一种方法比较简单,能提升整体代码的性能
    2、第二种方法是大家最常用的方法,比较容易理解
    
    
    

    说明:

    1、我的脚本都是以课工场为例,如果有什么不明白的地方,欢迎大家留言,我看的话会及时给大家解答

    2、辛苦原创,转载请注明出处

    展开全文
  • 通常,我们会使用Alt+Tab键来切换应用程序窗口,但是程序窗口频繁切换时较为麻烦。其实还有另外一快速的切换方式,就是Win+数字。 例如:如图,我们打开了Chrome浏览器、latex编辑器、PDF预览、MATLAB等...

    通常,我们会使用Alt+Tab键来切换应用程序窗口,但是在三个程序窗口频繁切换时较为麻烦。其实还有另外一种快速的切换方式,就是Win+数字。


    例如:如图,我们打开了Chrome浏览器、latex编辑器、PDF预览、MATLAB等软件。




    使用Win+1可以直接切换到浏览器,

    使用Win+2可以直接切换到latex编辑器,

    使用Win+3可以直接切换到PDF文档,

    使用Win+4可以直接切换到MATLAB。

    展开全文
  • WPF 同一窗口区域实现界面切换

    万次阅读 2018-07-06 15:05:31
    实现类似 C#TabControl控件的效果,同一区域实现界面的切换。关键词:ContentControl , Frame , Page实现步骤:1界面布局的预定区域放置一ContentControl : &lt;Grid &gt; &lt;Grid....
  • pyqt5如何同一个窗口切换不同界面

    千次阅读 多人点赞 2020-04-17 11:44:11
    网上找了半天也没发现什么靠谱的解答,自己捣鼓着花费了好几个小时,总算是发现了两能用的方法,先假设一下使用的场景:现在窗口的右半部分界面想要切换显示 我们主体窗口的控件为self.main_widget,网格...
  • Qt中单个窗口中实现多个页面显示

    万次阅读 2017-12-23 17:18:24
    简述很多时候我们希望一个QDialog或者一个自定义的QWidget实现多个窗口的实现,以此来实现当功能太多时不局限于每次单独创建其窗口去显示功能模块。下图展示了其效果。为了实现上图所能够实现的效果,根据博...
  • win7中常用切换窗口4快捷键使用

    千次阅读 2015-11-23 09:34:01
    平常使用系统,我们经常会通过一些快捷键来切换窗口,小编这里给大家总结下,哪些切换窗口的快捷键可以用。  1、Ait+Tab这是大家都知道的切换的快捷方式,按照你使用的顺序切换。  2、Win+Tab效果...
  • 虽然 Python3 已经出来很久了,虽然 Python2 即将成为历史了,但是因为历史原因,依然公司的老项目继续使用着 Python2 版本(切换成本太高),所以大多数开发者机器上 Python2 和 Python3 都是并存的,本文...
  • 目录 vim——打开多个文件、同时显示多个文件、文件之间切换 vim——打开多个文件、同时显示多个文件、文件之间...1、同一窗口中打开多个文件: vi file1 file2 file3 :n 切换到下一个文件 (n=next) :N 切换...
  • IOS页面切换几种方式

    千次阅读 2014-10-16 15:26:40
    从一视图控制器切换到另一视图控制器的几种方式 1,模态(modal)画面的显示方法: 例如iphone通讯录管理程序,追加新的通讯纪录时,就是使用这种模态画面 例:点击一按钮,进入另一界面 - ...
  • 2、鼠标右键打开终端窗口执行以下命令: sudo apt-get install nautilus-open-terminal sudo reboot 重启后你想要打开Terminal的目录单击鼠标右键,选择Open in Termainal3、同一个窗口打开多个终端当你...
  • WPF 同一窗口区域实现界面切换

    万次阅读 2016-12-07 16:28:45
    WPF 同一窗口区域实现界面切换实现类似 TabControl 控件的效果,同一区域实现界面的切换。关键词:ContentControl , Frame , Page
  • Qt多窗口切换实战与注意点(附详细代码与Qt资料)

    万次阅读 多人点赞 2018-05-08 12:23:18
    太兴奋了,花了一天时间,终于把一demo调通了,掉了无数坑,无论是看书还是看网络上的一些帖子,坑无数。本人也是刚接触Qt,就四五天吧。现在经过一些坑的洗礼,终于可以慢慢入门了,兴奋啊,吼啊,不禁让我...
  • 从一视图控制器切换到另一视图控制器的几种方式 1,模态(modal)画面的显示方法: 例如iphone通讯录管理程序,追加新的通讯纪录时,就是使用这种模态画面 例:点击一按钮,进入另一界面 - (IBAction)...
  • Windows程序窗口置前台的几种方法

    千次阅读 2013-08-15 17:27:02
    我觉得这是原因的:当一程序运行这函数的时候,我们可以想象,如果是用鼠标操作,那么当前窗口实际上正在操作,很可能瞬间离开后,焦点又回来了,那么看上去更就没有吧其它窗口置前的效果,所以这函数内部...
  • DIRECTX独占模式与窗口模式的切换

    千次阅读 2005-02-05 02:06:00
    觉得挺不错的,特此翻译过来,不对的地方希望大家指正DIRECTX独占模式与窗口模式的切换介绍让你的游戏能够独占(全屏)模式与窗口模式下运行应该很简单,但想要让它合理且优雅的运行就要做些工作了.这篇文章...
  • Android 7.0 新特性 分屏多窗口 中文API

    千次阅读 2016-09-27 00:46:17
    Android N 添加了对同时显示多个应用窗口的支持。 手持设备上,两个应用可以“分屏”模式左右并排或上下并排显示。 电视设备上,应用可以使用“画画”模式,用户与另一个应用交互的同时继续播放视频。 ...
  • 这篇文章主要介绍Selenium爬虫获取当前窗口句柄、切换窗口句柄以及调用Chrome浏览器几个知识点,其中获取当前句柄的方法是非常重要的一知识点,只有真正遇到的时候才能体会到它的强大。我爬虫主要使用Selenium、...
  • Qt 子窗口父窗口切换,窗口间传值

    万次阅读 2016-09-04 14:27:14
    使用QT的Event机制(这种没有把握,但是感觉应该是可以的),但是实现起来应该比前几种复杂,这里不做讨论。  下面分别进行讨论: 1.使用QT的Signal&Slot机制进行传值:  QT的Signal&Slot...
  • 基于Qt的多窗口设计-窗体切换的实现 窗体类的关系 布局管理部分,我们已经说过将主界面和两子系统分别封装成三不同的类。首先我们讨论每应该封装什么,其次再讨论这三类之间的具体关系。 ...
  • 这里写自定义目录标题新的改变功能快捷键合理的创建标题,助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一适合你的列表创建一表格设定内容居中、居左、居右SmartyPants创建一...
  • 觉得挺不错的,特此翻译过来,不对的地方希望大家指正DIRECTX独占模式与窗口模式的切换(一)介绍让你的游戏能够独占(全屏)模式与窗口模式下运行应该很简单,但想要让它合理且优雅的运行就要做些工作了....
  • Eclipse创建第一个窗口程序

    千次阅读 2019-07-21 18:35:55
    介绍Eclipse安装WIndowBuilder插件的几种方式,并用WIndowBuilder创建了第一个窗口程序。
  • Android 7.0多窗口实现解析

    千次阅读 2016-12-02 16:01:44
    在有了多窗口支持之后,用户可以同时打开和看到多个应用的界面。并且系统还支持在多个应用之间进行拖拽。大屏幕设备上,这一功能非常实用。 本文将详细讲解Android系统窗口功能的实现。 多窗口功能介绍
  • Android7.0 多窗口你值得拥有

    万次阅读 2016-09-23 16:52:29
    多窗口分屏其实国内并不陌生,已经一些手机和平板搭载了“分屏任务”和”APP窗口化”功能,但这些都是手机厂商自主定制系统添加的功能,并非安卓原生所有,因此他们的实现方式可能会不一样,但是现在google原始...
  • 2. Ubuntu左上角选择File/Open in Terminal 3. 快捷键alt+F2调出Run a Command,输入gnome-terminal 4.通过dash home这按钮,输入terminal,就可以看到Terminal终端的选项了,如下图: vi: ...
  • 安装多个版本jdk,可自由切换

    千次阅读 多人点赞 2020-04-01 15:24:38
    现在用的 jdk1.8.0_241 做开发,私下里想了解和测试最新版 jdk-14 的特性,所以需要两版本的 jdk(jdk1.8.0_241 和 jdk-14),而且要做到可以随时切换版本。 jdk官网下载地址 二、两jdk 的路径如下: D:\Runtime...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,748
精华内容 47,499
关键字:

在多个窗口中切换有几种方