Развернуть WebDriver (Selenium 2) в Python

Я пытаюсь написать простой скрипт, который проверяет, есть ли у меня какие-либо электронные письма gmail, помеченные SOMETHING, а затем открывает окно браузера Firefox на странице входа, после чего переходит к чему-то другому.

Вот что я делаю:

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

Я потратил часы на поиск и не нашел решения, позволяющего развернуть окно браузера. В другом месте я читал, что есть windowMaximize() или window_maximize(), но не смог заставить их работать, поскольку каждая конфигурация, которую я пробовал, утверждает, что она не существует для любого модуля.

Я немного знаю Python и работаю в Mac OSX.


person Dicky Brucks    schedule 18.04.2012    source источник
comment
Это очень просто, вам просто нужно написать эту строку. driver.maximize_window() Для получения более подробной информации с примером, пожалуйста, обратитесь к этому URL-адресу, я уже ответил здесь: edu.yoursfriends.com/839/   -  person Himanshu Tewari    schedule 01.02.2016


Ответы (5)


Я никогда не использовал эту функцию раньше, поэтому я попробовал ее.

driver.maximize_window()

Кажется, это работает нормально, если только я не использую Chrome. Я не уверен, является ли это дефектом, поскольку в IE9 и Firefox он работает безупречно.

edit: эта функция еще не реализована в Chromedriver -= Link выдать =-

edit (8 лет спустя): по-видимому, это работает в Chrome на Linux и Windows — так что, ура! Я не проверял это, но я оптимистичен, так как прошло почти десять лет с тех пор, как был предоставлен первоначальный ответ.

person Isaac    schedule 20.04.2012
comment
получить новейшую версию драйвера Chrome, и это работает в Windows - person HelloW; 12.09.2013
comment
Другой подход состоит в том, чтобы получить разрешение экрана из системы с помощью xdpyinfo | grep 'dimensions:' или xrandr | grep '*' или inxi -G | egrep 'Resolution:.*hz' -o затем установить его с помощью driver.set_window_size("width", "height") - person m3nda; 26.10.2015
comment
Способ сделать это с Chrome: options = webdriver.ChromeOptions() options.add_argument("--start-maximized") driver = Chrome(chrome_options=options) - person HenryM; 19.12.2016
comment
обновите свой ответ, теперь эта функция работает в Chrome как для Linux, так и для Windows. - person Genius; 29.11.2020

Даже если это старо, здорово знать, что вы всегда можете получить значения из системы, а затем установить их вручную. Это будет работать на каждом веб-драйвере, который вы используете.

#!/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)
person m3nda    schedule 26.10.2015

Существует действительно простой способ создать развернутое окно:

from selenium.webdriver.chrome.options import Options

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

Вы также можете использовать эту библиотеку для максимизации окна и многого другого, см. документацию: https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/Chrome/Options.html

person Gavriel Cohen    schedule 15.03.2018

Для Chrome должна быть реализована следующая сборка, включающая исправление: http://code.google.com/p/chromedriver/issues/detail?id=65

person zvezda    schedule 19.06.2012
comment
Это должен быть комментарий, а не ответ. - person stuxnetting; 31.12.2014

Я решаю это с помощью этой строки

self.driver = webdriver.Chrome()
self.driver.maximize_window()
person Uliseswise    schedule 01.05.2020