這篇總結主要是關於兩方面的需求:其一,在瀏覽器不同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多窗口切換,以便於您獲取更多的相關知識。