2012-04-18 11 views
10

Sto tentando di scrivere un semplice script che controlla se ho qualche email di Gmail etichettata SOMETHING e poi apre una finestra del browser Firefox in una pagina di accesso, dopo di che va a qualcos'altro.Massimizza WebDriver (Selenium 2) in Python

Ecco quello che sto facendo:

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') 

Ho passato di ricerca ore e non ho trovato una soluzione per massimizzare la finestra del browser. Altrove ho letto che c'è una windowMaximize() o window_maximize(), ma non sono stato in grado di farli funzionare perché ogni configurazione che ho provato afferma che non esiste per qualsiasi modulo.

So solo un po 'di pitone, e sto lavorando in Mac OSX

+0

È molto semplice, basta scrivere questa riga. driver.maximize_window() Per maggiori dettagli si rimanda con esempio questo URL, ho già risposto anche qui: http://edu.yoursfriends.com/839/maximize-window-in-selenium-webdriver-using-python –

risposta

21

Non ho mai usato questa funzionalità prima, così ho deciso di provarlo.

driver.maximize_window() 

Questo sembra funzionare bene - a meno che non sto usando Chrome. Non sono sicuro che si tratti di un difetto, in quanto funziona perfettamente in IE9 e Firefox.

edit: Questa è una caratteristica che deve ancora essere implementata in Chromedriver -= Link to issue =-

+1

get la versione più recente del driver chrome e funziona su Windows – HelloW

+0

Un altro approccio è ottenere la risoluzione dello schermo dal sistema ** con ** 'xdpyinfo | grep 'dimensions:' '** or **' xrandr | grep '*' '** o **' inxi -G | egrep 'Risoluzione:. * hz' -o' ** quindi ** impostalo con 'driver.set_window_size (" width "," height ")' – erm3nda

+1

Il modo per farlo con Chrome è: 'options = webdriver.ChromeOptions () ' ' options.add_argument ("- start-maximized") ' ' driver = Chrome (chrome_options = opzioni) ' – HenryM

0

Anche se questo è vecchio , è bello sapere che puoi sempre ottenere i valori dal sistema e poi impostarlo a mano. Questo funzionerebbe su tutti i webdriver che utilizzi.

#!/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)