web-dev-qa-db-fra.com

Maximiser WebDriver (Selenium 2) en Python

J'essaie d'écrire un script simple qui vérifie si j'ai des courriers électroniques Gmail portant le libellé SOMETHING, puis ouvre une fenêtre de navigateur Firefox vers une page de connexion, après quoi elle passe à autre chose. 

Voici ce que je fais: 

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

J'ai passé des heures à chercher et je n'ai pas trouvé de solution pour maximiser la fenêtre du navigateur. Ailleurs, j'ai lu qu'il y avait windowMaximize () ou window_maximize (), mais je n'ai pas réussi à les faire fonctionner car chaque configuration que j'ai essayée prétend qu'il n'existe pour aucun module.

Je ne connais qu'un peu de python et je travaille sous Mac OSX

16
Dicky Brucks

Je n'ai jamais utilisé cette fonctionnalité auparavant, alors je l'ai essayée.

driver.maximize_window()

Cela semble fonctionner correctement - sauf si j'utilise Chrome. Je ne suis pas sûr qu'il s'agisse d'un défaut, car cela fonctionne parfaitement dans IE9 et Firefox.

edit: Il s’agit d’une fonctionnalité qui n’a pas encore été implémentée dans Chromedriver - = Lien vers issue = -

33
Isaac

Pour Chrome, devrait figurer dans la prochaine version qui inclut la révision, implémentée: http://code.google.com/p/chromedriver/issues/detail?id=65

2
zvezda

Il existe un moyen très simple de créer une fenêtre maximisée:

from Selenium.webdriver.chrome.options import Options

chrome_options = Options()
# maximized window
chrome_options.add_argument("--start-maximized")

Vous pouvez également utiliser cette bibliothèque pour maximiser la fenêtre et plus encore, voir la documentation: https://seleniumhq.github.io/Selenium/docs/api/rb/Selenium/WebDriver/Chrome/Options.html

1
Gavriel Cohen

Même si cette version est ancienne, il est intéressant de savoir que vous pouvez toujours obtenir les valeurs du système, puis les définir à la main. Cela fonctionnerait sur tous les WebDriver que vous utilisez.

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