这篇总结主要是关于两方面的需求:其一,在浏览器不同tab标签页之间按时间切换(同事用来不停刷新grid crontol 监控页面);其二,实现开启多个窗口,并将窗口缩放到一定范围,并齐占满整个桌面,按不同的时间间隔刷新几个页面。

一、标签页之间切换

之前这个通过找了一个浏览器插件tab-rotator实现了其需求,并未写程序实现,后面没事的时候网上翻selenium资料写了一个,内容如下:

#code by www.111cn.net
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.set_page_load_timeout(60)
driver.implicitly_wait(15)
# First Tab
driver.get("https://www.baidu.com")
oldtab = driver.current_window_handle
print driver.title
time.sleep(3)
# Second Tab
driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL + "t")
driver.get("http://www.111cn.net/")
newtab = driver.current_window_handle
print driver.title
time.sleep(3)
# Go back to First Tab
driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL + Keys.PAGE_UP)
driver.switch_to_window(oldtab)
print driver.title
driver.refresh()
time.sleep(3)
# Go to Second Tab again
driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL + Keys.PAGE_UP)
driver.switch_to_window(newtab)
print driver.title
time.sleep(3)
driver.close()
这个只是简单的实现了单次循环,如果要实现不停循环,加一个while True死循环就可以了。selenium 的更多帮助可以参看官方手册,也可以去我网盘里查看pdf文档 。

二、多个窗口间切换

多个窗口间切换的代码如下:

#code by www.111cn.net
import win32gui,win32com.client
#import win32con
from selenium import webdriver
import time
def  Broswer(url,x,y):
    browser = webdriver.Firefox()
    browser.set_window_size(480, 800)
    browser.get(url)
    browser.set_window_position(x, y)
    #browser.get('https://www.163.com')
    #browser.close()
    #browser.quit()
def windowEnumerationHandler(hwnd, top_windows):
    if u"firefox" in win32gui.GetWindowText(hwnd).lower():
       top_windows.append((hwnd, win32gui.GetWindowText(hwnd)))
Broswer('http://www.so.com',0,0)
Broswer('http://www.sogou.com',400,0)
Broswer('http://www.baidu.com',800,0)
if __name__ == "__main__":
    results = []
    top_windows = []
    win32gui.EnumWindows(windowEnumerationHandler, top_windows)
    '''for i in top_windows:
        if u"notepad" in i[1].lower():
            print i
            #w3hd=win32gui.FindWindow('MozillaWindow',i[1])
            #win32gui.MoveWindow(w3hd, 50, 50, 300, 200, True)
            #0:hiddle 1:display  2:min   3:max
            #win32gui.ShowWindow(w3hd,0)
            #win32gui.ShowWindow(w3hd, win32con.SW_MAXIMIZE)
            win32gui.ShowWindow(i[0],1)
            win32gui.SetForegroundWindow(i[0])
            #break'''
    while True:
      for i in top_windows:
        #if u"firefox" in i[1].lower():
        print i
        time.sleep(3)
        win32gui.ShowWindow(i[0],1)
        shell = win32com.client.Dispatch("WScript.Shell")
        shell.SendKeys('%')
        win32gui.SetForegroundWindow(i[0])
        shell.SendKeys("^{F5}", 0)
这里的窗口位置和大小移动是通过selenium模块实现的,win32gui 模块也可以实现该功能,具体如下:

import win32gui
# 查找状态栏窗口
shellTray = win32gui.FindWindow("Shell_TrayWnd", None)
# 显示窗口
win32gui.ShowWindow(shellTray, 1)
# 隐藏窗口
win32gui.ShowWindow(shellTray, 0)
# 更改窗口大小和位置
win32gui.MoveWindow(window, 0, 0, 1440, 900, True)
#最大化窗口
hwnd = win32gui.GetForegroundWindow()
win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
需在注意的是pywin32模块的帮助文档无通过help(模块名)查看,其单独有一个帮助文档 。

多窗口录制的视频及selenium相关的文档可以到本站的云盘获取:http://pan.baidu.com/s/1c2bXGGg

win+python+selenium实现窗口和tab切换的更多相关文章

  1. Python+Selenium学习--窗口切换及操作元素

    场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...

  2. python+selenium多窗口之间切换

    #!/usr/bin/env python # coding:utf8 # author:Z time:2018/9/19 import time from selenium import webdr ...

  3. 用python selenium 单窗口单IP刷网站流量脚本

    近期有朋友说需要增加自己网站的流量,故用python写了一个简单的脚本,配合IP池或者动态IP都可以刷,当然最爽的是单窗口单IP. 说明 作弊可耻! 环境 python3.8 + selenium + ...

  4. Python+selenium之窗口截图

    自动化用例是由程序去执行,因此有时候打印的错误信息并不明确,如果在脚本执行错误的时候能对当前窗口截图保存,那么通过图片就可以非常直观的看出出错的原因.webdriver提供了截图函数get_scree ...

  5. python+selenium的frame表单切换

    switch_to.frame()                               切换frame switch_to.default_content()                切 ...

  6. python+selenium之多表单切换

    在Web应用中经常会遇到fram/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于fram/iframe表单内嵌套页面上的元素无法直接定位.这是需要通过swit ...

  7. 【Selenium03篇】python+selenium实现Web自动化:元素三类等待,多窗口切换,警告框处理,下拉框选择

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第三篇博 ...

  8. python之selenium多窗口切换

    前提: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这就需要主机切换到新打开的窗口上.WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换. 内容: 以 ...

  9. python+selenium之多窗口切换

    #打开浏览器driver = webdriver.Firefox()driver.get(url)#获取当前窗口now_handle=driver.current_window_handle # 获取 ...

随机推荐

  1. linux中如何使用终端裁剪图片?

    1,首先要安装支持图片裁剪的包: sudo apt-get install imagemagick 需要的话可以update一下, 2,在图片所在位置打开终端,我的我的截图叫screenshot.pn ...

  2. LaTeX IEEE模板

    因为课程作业的要求需要完成一篇IEEE格式的论文,所以选择入门LaTeX.但是期间遇到了各种各样莫名其妙的坑.前前后后挣扎了两个多星期终于完成了IEEE模板的设置.下面详细记录一下让我深恶痛绝的心路历 ...

  3. android 组建添加透明度

    给TextView添加透明度,起初用的方法是android:alpha = "0.3"  添加后,文字显示也有点透明发虚,后来改成设置background,然后 backgroun ...

  4. 2017-2018-2 20165325 实验二《Java面向对象程序设计》实验报告

    一.面向对象程序设计-1 1.检查点要求 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 参考 http://www.cnblo ...

  5. Linux C 读取文件夹下所有文件(包括子文件夹)的文件名【转】

    转自:https://www.cnblogs.com/xudong-bupt/p/3504442.html 本文:http://www.cnblogs.com/xudong-bupt/p/350444 ...

  6. MySQL索引调优【转】

    一.关于查询计划 其实,关于所有的关系型数据库中,在运行T-SQL语句的时候,在查询器进行编译运行的同时,都会有着自己的内部的一个优化过程,而这优化之后的产物就是:执行计划. 在SQL SERVER中 ...

  7. Keepalived详解(一):Keepalived介绍【转】

    一.Keepalived介绍:         Keepalived是Linux下一个轻量级的高可用解决方案,它与HeartBeat.RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但是又 ...

  8. python标准库之argparse

    argparse的使用 argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并 ...

  9. POJ 1741 Tree 树上点分治

    题目链接:http://poj.org/problem?id=1741 题意: 给定一棵包含$n$个点的带边权树,求距离小于等于K的点对数量 题解: 显然,枚举所有点的子树可以获得答案,但是朴素发$O ...

  10. 解决ssh登陆很慢的问题

    解决步骤: 先备份/etc/ssh/sshd_config,备份命令为 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 1.su (以root用户登录 ...