2013-03-13 2 views
46

Ich verwende Selenium WebDriver für Python. Ich möchte den Browser mit einer bestimmten Breite und Höhe instanziieren. Bisher in der Nähe kann ich ist:Wie stelle ich die Browserbreite und -höhe in Selenium WebDriver ein?

driver = webdriver.Firefox() 
driver.set_window_size(1080,800) 

Welche funktioniert, aber setzt die Browsergröße, nachdem es erstellt wird, und ich möchte es bei der Instanzierung gesetzt. Ich vermute, es ist ein Ansatz entlang der Linien von:

profile = webdriver.FirefoxProfile(); 
profile.set_preference(foo, 1080) 
driver = webdriver.Firefox(profile) 

Aber ich weiß nicht, was foo wäre, und ich kann nicht herausfinden, wo die docs sind.

Q1: Gibt es eine Möglichkeit, Breite/Höhe bei Instanziierung festzulegen?

Q2: Wo sind die Referenzdokumente, die alle von profile.set_preference verwendbaren Schlüssel auflisten?

+5

Warum ist es eine schlechte Sache, dass es die Größe ändert, nachdem es erstellt wurde? – Arran

+0

Ehrlich gesagt, ich weiß es nicht.Genau genommen ist es anders, wenn ein Fenster in einer bestimmten Größe geöffnet wird (ich kann ** den Unterschied sehen). Ich weiß nicht, ob dieser Unterschied _material_ ist. Da dies Tests sind, möchte ich so viele Unbekannte wie möglich entfernen. Wenn mir jemand sagt, dass es keinen Unterschied macht, wäre ich glücklich. Aber sie müssten wahrscheinlich die Einzelheiten meines Tests kennen, um das zu tun, und ich möchte dies für alle zukünftigen Tests, die ich schreibe, tun können. – tom

+2

Ich würde Arran zustimmen. Ich kann mir keinen Grund vorstellen, warum die Größenänderung nach der Erstellung Probleme verursachen würde. –

Antwort

15

versuchen, etwas wie folgt aus:

IWebDriver _driver = new FirefoxDriver(); 
_driver.Manage().Window.Position = new Point(0, 0); 
_driver.Manage().Window.Size = new Size(1024, 768); 

Nicht sicher, ob es so zwar gestartet, nachdem sie, die Größe werde vielleicht ist es nicht, was Sie

+0

Ist es nicht Python sein? –

0

wollen Hier ist firefox Profil Standard Prefs von Python Selen 2,31. firefox_profile.py 0

und Typ "about: config" in den folgenden Adressleiste alle prefs in etwa

Bezugnahme auf die Einträge zu sehen: conf ig: http://kb.mozillazine.org/About:config_entries

DEFAULT_PREFERENCES = { 
    "app.update.auto": "false", 
    "app.update.enabled": "false", 
    "browser.download.manager.showWhenStarting": "false", 
    "browser.EULA.override": "true", 
    "browser.EULA.3.accepted": "true", 
    "browser.link.open_external": "2", 
    "browser.link.open_newwindow": "2", 
    "browser.offline": "false", 
    "browser.safebrowsing.enabled": "false", 
    "browser.search.update": "false", 
    "extensions.blocklist.enabled": "false", 
    "browser.sessionstore.resume_from_crash": "false", 
    "browser.shell.checkDefaultBrowser": "false", 
    "browser.tabs.warnOnClose": "false", 
    "browser.tabs.warnOnOpen": "false", 
    "browser.startup.page": "0", 
    "browser.safebrowsing.malware.enabled": "false", 
    "startup.homepage_welcome_url": "\"about:blank\"", 
    "devtools.errorconsole.enabled": "true", 
    "dom.disable_open_during_load": "false", 
    "extensions.autoDisableScopes" : 10, 
    "extensions.logging.enabled": "true", 
    "extensions.update.enabled": "false", 
    "extensions.update.notifyUser": "false", 
    "network.manage-offline-status": "false", 
    "network.http.max-connections-per-server": "10", 
    "network.http.phishy-userpass-length": "255", 
    "offline-apps.allow_by_default": "true", 
    "prompts.tab_modal.enabled": "false", 
    "security.fileuri.origin_policy": "3", 
    "security.fileuri.strict_origin_policy": "false", 
    "security.warn_entering_secure": "false", 
    "security.warn_entering_secure.show_once": "false", 
    "security.warn_entering_weak": "false", 
    "security.warn_entering_weak.show_once": "false", 
    "security.warn_leaving_secure": "false", 
    "security.warn_leaving_secure.show_once": "false", 
    "security.warn_submit_insecure": "false", 
    "security.warn_viewing_mixed": "false", 
    "security.warn_viewing_mixed.show_once": "false", 
    "signon.rememberSignons": "false", 
    "toolkit.networkmanager.disable": "true", 
    "toolkit.telemetry.enabled": "false", 
    "toolkit.telemetry.prompted": "2", 
    "toolkit.telemetry.rejected": "true", 
    "javascript.options.showInConsole": "true", 
    "browser.dom.window.dump.enabled": "true", 
    "webdriver_accept_untrusted_certs": "true", 
    "webdriver_enable_native_events": "true", 
    "webdriver_assume_untrusted_issuer": "true", 
    "dom.max_script_run_time": "30", 
    } 
+0

Danke. Ich sehe dort keine Einstellungen für die Browsergröße, aber es ist nützlich, dass die Liste und der Link identisch sind. – tom

0
profile = webdriver.FirefoxProfile() 
profile.set_preference('browser.window.width',0) 
profile.set_preference('browser.window.height',0) 
profile.update_preferences() 

schreiben Dieser Code in Setup-Teil Ihres Testcode vor dem: webdriver.Firefox() Linie.

+0

Funktioniert nicht für Java 7 auf OS X 10.9 –

+0

Die Frage ist über die Einstellung der anfänglichen Windows-Größe mit ** Python ** .... Wie auch immer, dies funktioniert nicht mit Python, zumindest mit Selen 2.46.0 und Firefox 38.0.5 –

28

Für mich ist die einzige Sache, die in Java 7 auf OS X gearbeitet 10,9 war:

// driver = new RemoteWebDriver(new URL(grid), capability); 
driver.manage().window().setPosition(new Point(0,0)); 
driver.manage().window().setSize(new Dimension(1024,768)); 

Wo 1024 die Breite ist, und 768 ist die Höhe.

20

Hier ist, wie ich es in Python zu tun mit Selen 2.48.0:

from selenium.webdriver import Firefox 
driver = Firefox() 
driver.set_window_position(0, 0) 
driver.set_window_size(1024, 768) 
2

Wenn Sie mit Chrom

chrome_options = Options() 
chrome_options.add_argument("--start-maximized"); 
chrome_options.add_argument("--window-position=1367,0"); 
if mobile_emulation : 
    chrome_options.add_experimental_option("mobileEmulation", mobile_emulation) 

    self.driver = webdriver.Chrome('/path/to/chromedriver', 
            chrome_options = chrome_options) 

Diese im Browser auf dem zweiten Monitor Inbetriebnahme führen wird, ohne irgendein nerviges Flimmern oder Bewegungen über den Bildschirm.

1

Es ist einfach. Hier ist der vollständige Code.

from selenium import webdriver 
driver = webdriver.Chrome() 
driver.get("Your URL") 
driver.set_window_size(480, 320) 

Stellen Sie sicher, Chrom-Treiber in Ihrem Systempfad ist.

Verwandte Themen