24

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で作業しています

4

5 に答える 5

61

私はこれまでこの機能を使用したことがないので、試してみました。

driver.maximize_window()

Chromeを使用していない限り、これは問題なく機能しているようです。IE9とFirefoxで問題なく動作するため、これが欠陥かどうかはわかりません。

編集:これはChromedriverにまだ実装されていない機能です-=問題へのリンク=-

編集(8年後):どうやらこれはLinuxとWindowsのChromeで機能しているようです-そう、イェーイ!私はそれをテストしていませんが、元の答えが提供されてからほぼ10年が経過しているので、私は楽観的です。

于 2012-04-20T14:06:45.780 に答える
3

これが古いものであっても、いつでもシステムから値を取得して手動で設定できることを知っておくと便利です。これは、使用するすべての Web ドライバーで機能します。

#!/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)
于 2015-10-26T12:28:19.353 に答える
1

Chrome の場合、実装されたリビジョンを含む次のビルドにある必要があります: http://code.google.com/p/chromedriver/issues/detail?id=65

于 2012-06-19T16:19:24.567 に答える