2012-04-18 16 views
10

Tôi đang cố gắng viết một tập lệnh đơn giản để kiểm tra xem tôi có bất kỳ email gmail nào được dán nhãn SOMETHING không và sau đó mở cửa sổ trình duyệt firefox đến trang đăng nhập.Tối đa WebDriver (Selenium 2) bằng Python

Đây là những gì tôi đang làm:

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

Tôi đã dành giờ tìm kiếm và đã không tìm thấy một giải pháp để tối đa hóa cửa sổ trình duyệt. Ở những nơi khác tôi đã đọc rằng có một windowMaximize() hoặc window_maximize(), nhưng đã không thể làm cho chúng hoạt động vì mọi cấu hình tôi đã thử xác nhận nó không tồn tại cho bất kỳ module nào.

Tôi chỉ biết một chút trăn, và đang làm việc trong Mac OSX

+0

Rất dễ, bạn chỉ cần viết dòng này. driver.maximize_window() Để biết thêm chi tiết, vui lòng tham khảo url này, tôi đã trả lời ở đây: http://edu.yoursfriends.com/839/maximize-window-in-selenium-webdriver-using-python –

Trả lời

21

Tôi chưa bao giờ sử dụng chức năng này trước đây, vì vậy tôi đã dùng thử.

driver.maximize_window() 

Điều này có vẻ ổn - trừ khi tôi đang sử dụng Chrome. Tôi không chắc chắn nếu đây là một khiếm khuyết, vì nó hoạt động hoàn hảo trong IE9 và Firefox.

chỉnh sửa: Đây là một tính năng mà vẫn chưa được thực hiện trong Chromedriver -= Link to issue =-

+1

get phiên bản mới nhất của trình điều khiển chrome và hoạt động trên windows – HelloW

+0

Một cách tiếp cận khác là lấy độ phân giải màn hình từ hệ thống ** với ** 'xdpyinfo | kích thước grep ':' '** hoặc **' xrandr | grep '*' '** hoặc **' inxi -G | egrep 'Độ phân giải:. * hz' -o' ** sau đó ** đặt nó bằng 'driver.set_window_size (" chiều rộng "," chiều cao ")' – erm3nda

+1

Cách thực hiện với Chrome là: 'options = webdriver.ChromeOptions () ' ' options.add_argument ("- bắt đầu tối đa hóa") ' ' driver = Chrome (chrome_options = options) ' – HenryM

0

Thậm chí nếu điều này là cũ , thật tuyệt khi biết rằng bạn luôn có thể nhận được các giá trị từ hệ thống rồi đặt nó bằng tay. Điều này sẽ hoạt động trên mọi trình quản lý web bạn sử dụng.

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