2012-04-18 16 views
10

Estoy intentando escribir una secuencia de comandos simple que comprueba si tengo correos electrónicos de Gmail etiquetados SOMETHING y luego abre una ventana del navegador Firefox a una página de inicio de sesión, luego pasa a otra cosa.Maximice WebDriver (Selenium 2) en Python

Esto es lo que estoy haciendo:

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

He pasado horas de búsqueda y no he encontrado una solución para maximizar la ventana del navegador. En otra parte, he leído que hay una windowMaximize() o window_maximize(), pero no he podido hacer que funcionen, ya que cada configuración que he probado asegura que no existe para ningún módulo.

sólo sé un poco de pitón, y estoy trabajando en el Mac OS X

+0

Es muy fácil, solo tiene que escribir esta línea. driver.maximize_window() Para obtener más detalles con el ejemplo, consulte esta url, ya he respondido aquí también: http://edu.yoursfriends.com/839/maximize-window-in-selenium-webdriver-using-python –

Respuesta

21

nunca he utilizado esta funcionalidad antes, así que probé.

driver.maximize_window() 

Esto parece funcionar bien, a menos que esté usando Chrome. No estoy seguro de si esto es un defecto, ya que funciona sin problemas en IE9 y Firefox.

edición: Esta es una característica que aún no se ha implementado en Chromedriver -= Link to issue =-

+1

get la última versión del controlador de Chrome y esto funciona en Windows – HelloW

+0

Otro enfoque es obtener la resolución de pantalla del sistema ** con ** 'xdpyinfo | Dimensiones grep: '' ** o ** 'xrandr | grep '*' '** o **' inxi -G | egrep 'Resolution:. * hz' -o' ** then ** configúralo con 'driver.set_window_size (" width "," height ")' – erm3nda

+1

La forma de hacerlo con Chrome es: 'options = webdriver.ChromeOptions () ' ' options.add_argument ("- start-maximized") ' ' driver = Chrome (chrome_options = opciones) ' – HenryM

0

Incluso si esto es viejo , es genial saber que siempre puedes obtener valores del sistema y configurarlo a mano. Esto funcionaría en cada controlador de página web que use.

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