win+python+selenium實現視窗和tab切換

來源:互聯網
上載者:User

這篇總結主要是關於兩方面的需求:其一,在瀏覽器不同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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.