Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maximize WebDriver (Selenium 2) in Python

Tags:

I'm attempting to write a simple script that checks if I have any gmail emails labeled SOMETHING and then opens a firefox browser window to a login page, after which it goes to something else.

Here's what I'm doing:

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

I've spent hours search and haven't found a solution to maximize the browser window. Elsewhere i've read that there is a windowMaximize() or window_maximize(), but have not been able to get them to work since every configuration I've tried claims it doesn't exist for whatever module.

I only know a little python, and am working in Mac OSX

like image 629
Dicky Brucks Avatar asked Apr 18 '12 02:04

Dicky Brucks


People also ask

How do I maximize Chrome in python?

Using maximize_window() method. Using fullscreen_window() method.

How do you maximize in Selenium?

To maximize browser in Selenium, you need to call the maximize() Selenium command to maximize window interface of the driver class. void maximize() – This method is used to maximize the current browser.

How does Selenium work with multiple tabs in python?

Ways to open multiple tabs using Selenium: We need to call “execute_script” method which in turn executes window. open('about:blank', 'secondtab') javascript. Then we need to switch to that tab and for that tab can give any valid URL.


2 Answers

I've never used this functionality before, so I tried it out.

driver.maximize_window() 

This seems to work fine - unless I am using Chrome. I'm not sure if this is a defect, as it works flawlessly in IE9 and Firefox.

edit: This is a feature which has yet to be implemented in Chromedriver -= Link to issue =-

edit (8 years later): Apparently this is working in Chrome on Linux and Windows - so, yay! I haven't tested it, but I am optimistic since it has been nearly a decade since the original answer was provided.

like image 121
Isaac Avatar answered Nov 17 '22 00:11

Isaac


Even if this is old, it's cool to know that you can always get values from system then set it by hand. This would work on every webdriver you use.

#!/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) 
like image 39
m3nda Avatar answered Nov 17 '22 00:11

m3nda