用Python最大化WebDriver(Selenium 2)

时间:2012-04-18 02:54:20

标签: python selenium selenium-webdriver webdriver maximize

我正在尝试编写一个简单的脚本,检查我是否有任何标记为SOMETHING的gmail电子邮件,然后打开一个登录页面的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 = "someone@gmail.com"
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中工作

5 个答案:

答案 0 :(得分:35)

我之前从未使用过这个功能,所以我试了一下。

driver.maximize_window()

这似乎工作正常 - 除非我使用的是Chrome。我不确定这是否是一个缺陷,因为它在IE9和Firefox中完美无缺。

编辑: 这是一项尚未在Chromedriver -= Link to issue =-

中实施的功能

答案 1 :(得分:2)

对于Chrome,应该是包含修订的下一个版本,已实施:http://code.google.com/p/chromedriver/issues/detail?id=65

答案 2 :(得分:1)

创建最大化窗口有一种非常简单的方法:

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

答案 3 :(得分:0)

即使这是旧的,知道你总是可以从系统中获取值然后手动设置它是很酷的。这适用于您使用的每个webdriver。

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

答案 4 :(得分:0)

我用这一行解决

self.driver = webdriver.Chrome()
self.driver.maximize_window()