zoukankan      html  css  js  c++  java
  • win+python+selenium实现窗口和tab切换

    这篇总结主要是关于两方面的需求:其一,在浏览器不同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

    以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文档 模块 selenium切换tab标签、selenium 切换tab、selenium python 窗口、selenium 切换窗口、selenium多窗口切换,以便于您获取更多的相关知识。

  • 相关阅读:
    pthread_key_t和pthread_key_create()详解
    oracle的时间
    spring加载bean报错:expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
    MyBatis调用存储过程
    java的时间
    java的日期
    java中的多态
    笔记本设置wifi热点并抓包
    WiresShark使用说明
    HTTP协议概述
  • 原文地址:https://www.cnblogs.com/meimeilove/p/7380273.html
Copyright © 2011-2022 走看看