2012-04-18 16 views
10

Próbuję napisać prosty skrypt, który sprawdza, czy mam wiadomości e-mail oznaczone jako "COŚ", a następnie otwiera okno przeglądarki Firefox na stronę logowania, po czym przechodzi do czegoś innego.Maksymalizuj WebDriver (Selenium 2) w Pythonie

Oto co robię:

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

spędziłem przeszukiwanie godzin i nie znalazł rozwiązanie, aby zmaksymalizować okno przeglądarki. Gdzie indziej przeczytałem, że istnieje windowMaximize() lub window_maximize(), ale nie udało się ich uruchomić, ponieważ każda konfiguracja, którą wypróbowałem, twierdzi, że nie istnieje dla żadnego modułu.

wiem tylko trochę Pythona, a pracuję w Mac OSX

+0

To bardzo proste, wystarczy napisać tę linię. driver.maximize_window() Aby uzyskać więcej szczegółowych informacji na temat przykładu, zapoznaj się z tym adresem URL, tutaj już odpowiedziałam: http://edu.twoja_firma.com/839/maximize-window-in-selenium-webdriver-using-python –

Odpowiedz

21

nigdy nie używałem tej funkcji przed, więc próbowałem go.

driver.maximize_window() 

To działa dobrze - chyba że używam Chrome. Nie jestem pewien, czy to jest defekt, ponieważ działa bezbłędnie w IE9 i Firefox.

edit: Jest to cecha, która musi jeszcze zostać wdrożone w Chromedriver -= Link to issue =-

+1

najnowsza wersja sterownika chrome i działa na windows – HelloW

+0

Innym rozwiązaniem jest uzyskanie rozdzielczości ekranu z systemu ** z ** 'xdpyinfo | grep 'dimensions:' '** lub **' xrandr | grep '*' '** lub **' inxi -G | egrep 'Rozdzielczość:. * hz' -o' ** then ** ustaw ją za pomocą 'driver.set_window_size (" width "," height ")' – erm3nda

+1

Sposób na wykonanie z Chrome to: 'options = webdriver.ChromeOptions () ' ' options.add_argument ("- start-maximized") ' ' driver = Chrome (chrome_options = options) ' – HenryM

0

Nawet jeśli jest to stary , fajnie jest wiedzieć, że zawsze można uzyskać wartości z systemu, a następnie ustawić ręcznie. To działałoby na każdym używanym kamerze.

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