【问题标题】:Maximize WebDriver (Selenium 2) in Python在 Python 中最大化 WebDriver (Selenium 2)
【发布时间】:2012-04-29 10:29:23
【问题描述】:

我正在尝试编写一个简单的脚本来检查我是否有任何标记为 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中工作

【问题讨论】:

  • 很简单,你只需要写这行。 driver.maximize_window() 有关示例的更多详细信息,请参阅此网址,我也已经在这里回答过:edu.yoursfriends.com/839/…

标签: python selenium selenium-webdriver webdriver maximize


【解决方案1】:

我以前从未使用过此功能,所以我尝试了一下。

driver.maximize_window()

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

编辑: 这是 Chromedriver 中尚未实现的功能-= Link to issue =-

编辑(8 年后): 显然,这在 Linux 和 Windows 上的 Chrome 中运行 - 所以,耶!我还没有测试过,但我很乐观,因为距离提供原始答案已经近十年了。

【讨论】:

  • 获取最新版本的 chrome 驱动,这适用于 windows
  • 另一种方法是从系统获取屏幕分辨率 with xdpyinfo | grep 'dimensions:' or xrandr | grep '*' or inxi -G | egrep 'Resolution:.*hz' -o 然后将其设置为driver.set_window_size("width", "height")
  • 使用 Chrome 的方法是:options = webdriver.ChromeOptions()options.add_argument("--start-maximized")driver = Chrome(chrome_options=options)
  • 请更新您的答案,该功能现在适用于 Linux 和 Windows 的 chrome。
【解决方案2】:

即使这是旧的,很高兴知道您总是可以从系统中获取值然后手动设置它。这适用于您使用的每个网络驱动程序。

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

【讨论】:

    【解决方案3】:

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

    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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 这应该是评论而不是答案。
      【解决方案5】:

      我用这条线解决了

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

      【讨论】:

        猜你喜欢
        • 2011-03-12
        • 2018-07-31
        • 2018-06-15
        • 1970-01-01
        • 2020-05-27
        • 2012-08-16
        • 2023-04-09
        • 2014-04-23
        • 2012-08-26
        相关资源
        最近更新 更多