2012-04-18 10 views
10

Ich versuche, ein einfaches Skript zu schreiben, das prüft, ob ich irgendwelche Gmail-E-Mails mit der Bezeichnung SOMETHING und öffnet dann ein Firefox-Browserfenster auf eine Anmeldeseite, wonach es zu etwas anderem geht.Maximieren Sie WebDriver (Selen 2) in Python

Hier ist, was ich tue:

from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.common.exceptions import TimeoutException 
from selenium.webdriver.common.action_chains import ActionChains 
import time, imaplib 

Eusername = "[email protected]" 
Epassword = "password1" 

username = "username" 
password = "password2" 

imaps = imaplib.IMAP4_SSL('imap.gmail.com','993') 
imaps.login(Eusername,Epassword) 

imaps.select('SOMETHING') 
status, response = imaps.status('SOMETHING', "(UNSEEN)") 
unreadcount = int(response[0].split()[2].strip(').,]')) 

while unreadcount > 0: 
    driver = webdriver.Firefox() 
    driver.get('http://wwww.SomeURL.com/some_login.html') 
    time.sleep(3) 
    inputElement = driver.find_element_by_name("user") 
    inputElement.send_keys(username) 
    inputElement = driver.find_element_by_name("pw") 
    inputElement.send_keys(password) 
    inputElement.submit() 
    time.sleep(1) 
    driver.get('http://www.SomeURL.com/somethingelse.html') 
    imaps.select('SOMETHING') 
    typ ,data = imaps.search(None,'UnSeen') 
    imaps.store(data[0].replace(' ',','),'+FLAGS','\Seen') 

ich Stunden Suche verbracht haben und haben eine Lösung nicht das Browser-Fenster zu maximieren gefunden. An anderer Stelle habe ich gelesen, dass es ein windowMaximize() oder window_maximize() gibt, aber ich konnte sie nicht zum Laufen bringen, da jede Konfiguration, die ich ausprobiert habe, behauptet, dass sie für kein Modul existiert.

Ich kenne nur einen wenig Python, und arbeite in Mac OSX

+0

Es ist sehr einfach, Sie müssen nur diese Zeile schreiben. driver.maximize_window() Weitere Details mit Beispiel entnehmen Sie bitte dieser URL, ich habe hier auch schon geantwortet: http://edu.yourfriends.com/839/maximize-window-in-selenium-webdriver-using-python –

Antwort

21

Ich habe diese Funktionalität noch nie benutzt, also versuchte ich es aus.

driver.maximize_window() 

Das scheint gut zu funktionieren - es sei denn, ich verwende Chrome. Ich bin mir nicht sicher, ob das ein Defekt ist, wie es in IE9 und Firefox einwandfrei funktioniert.

edit: Dies ist eine Funktion, die noch in Chromedriver umgesetzt werden muss -= Link to issue =-

+1

bekommen die neueste Version von Chrome-Treiber und das funktioniert auf Windows – HelloW

+0

Ein anderer Ansatz ist es, Bildschirmauflösung von System ** mit ** 'xdpyinfo | zu bekommen grep 'Dimensionen:' '** oder **' xrandr | grep '*' '** oder **' inxi -G | egrep 'Auflösung:. * hz' -o' ** dann ** setze es mit 'driver.set_window_size (" width "," height ")' – erm3nda

+1

Die Vorgehensweise mit Chrome ist: 'options = webdriver.ChromeOptions () ' ' options.add_argument ("- startmaximiert") ' ' driver = Chrome (chrome_options = options) ' – HenryM

0

Auch wenn dies alt Es ist cool zu wissen, dass man immer Werte vom System bekommen kann, dann setze es manuell. Dies funktioniert bei jedem verwendeten Webdriver.

#!/usr/bin/env python 
#! -*- coding: utf-8 -*- 

import selenium 
from selenium import webdriver 

import os, sys, time 

import wx 

print "example with maximize_window()" 
nav = webdriver.Firefox() 
nav.maximize_window() 
time.sleep(3) 
nav.quit() 

print 'example with fixed set_window_size("1024", "768")' 
nav = webdriver.Firefox() 
nav.set_window_size("1024", "768") 
time.sleep(3) 
nav.quit() 

print "example grabbing size with wx (wxWidgets)" 
nav = webdriver.Firefox() 
app = wx.App(False) #wx.App(False) # the wx.App object must be created first. 
screenxy = wx.GetDisplaySize() # returns a tuple 
nav.set_window_size(screenxy[0], screenxy[1]) 
time.sleep(3) 
nav.quit() 


sys.exit(0)