webentwicklung-frage-antwort-db.com.de

Maximieren Sie den WebDriver (Selenium 2) in Python

Ich versuche, ein einfaches Skript zu schreiben, das prüft, ob ich Gmail-E-Mails mit der Bezeichnung SOMETHING besitze, und dann ein Firefox-Browserfenster mit einer Anmeldeseite öffnet, woraufhin eine andere Seite aufgerufen wird. 

Folgendes mache ich: 

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 habe stundenlang gesucht und keine Lösung gefunden, um das Browserfenster zu maximieren. 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 es für kein Modul existiert.

Ich kenne nur ein bisschen Python und arbeite in Mac OSX

16
Dicky Brucks

Ich habe diese Funktionalität noch nie verwendet, also habe ich sie ausprobiert.

driver.maximize_window()

Das scheint gut zu funktionieren - es sei denn, ich benutze Chrome. Ich bin mir nicht sicher, ob dies ein Fehler ist, da er in IE9 und Firefox einwandfrei funktioniert.

edit: Dies ist eine Funktion, die noch nicht in Chromedriver implementiert wurde - = Link zur Ausgabe = -

33
Isaac

Für Chrome sollte im nächsten Build, der die Revision enthält, implementiert sein: http://code.google.com/p/chromedriver/issues/detail?id=65

2
zvezda

Es gibt eine sehr einfache Möglichkeit, ein maximiertes Fenster zu erstellen:

from Selenium.webdriver.chrome.options import Options

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

Sie können diese Bibliothek auch zum Maximieren des Fensters verwenden. Weitere Informationen finden Sie in der Dokumentation: https://seleniumhq.github.io/Selenium/docs/api/rb/Selenium/WebDriver/Chrome/Options.html

1
Gavriel Cohen

Auch wenn dies veraltet ist, ist es gut zu wissen, dass Sie immer Werte vom System abrufen und dann von Hand einstellen können. Dies würde auf jedem verwendeten Webtreiber funktionieren.

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