Wie stelle ich die Breite und Höhe des Browsers in Selenium WebDriver ein?

77

Ich verwende Selenium WebDriver für Python. Ich möchte den Browser mit einer bestimmten Breite und Höhe instanziieren. Bisher kann ich am nächsten kommen:

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

Was funktioniert, aber die Browsergröße nach dem Erstellen festlegt, und ich möchte, dass sie bei der Instanziierung festgelegt wird. Ich vermute, es gibt einen Ansatz in der Art von:

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

Aber ich weiß nicht, was foowäre, und ich kann nicht herausfinden, wo sich die Dokumente befinden.

Frage 1: Gibt es eine Möglichkeit, Breite / Höhe bei der Instanziierung einzustellen?

F2: Wo sind in den Referenzdokumenten alle Schlüssel aufgeführt, die von verwendet werden können profile.set_preference?

Tom
quelle
5
Warum ist es eine schlechte Sache, dass die Größe nach der Erstellung geändert wird?
Arran
Ehrlich gesagt, ich weiß es nicht. Streng genommen ist es anders zu einem Fenster wird in einer bestimmten Größe geöffnet (ich kann sehen , den Unterschied). Ich weiß nicht, ob dieser Unterschied wesentlich ist . Da es sich um Tests handelt, möchte ich so viele Unbekannte wie möglich entfernen. Wenn mir jemand sagen kann, dass es keinen Unterschied macht, wäre ich glücklich. Aber sie müssten wahrscheinlich die Einzelheiten meines Tests kennen, um dies zu tun, und ich möchte dies für alle zukünftigen Tests tun können, die ich schreibe.
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.
Robbie Wareham

Antworten:

36

So mache ich es in Python mit Selenium 2.48.0:

from selenium.webdriver import Firefox
driver = Firefox()
driver.set_window_position(0, 0)
driver.set_window_size(1024, 768)
Sirex
quelle
1
Das OP sagt ausdrücklich, dass es nach der Erstellung nicht festgelegt werden soll. Der Code in der Frage zeigt sie bereits mit set_window_size.
Bryan Oakley
set_window_position(0,0)positioniert das Fenster etwa 10 Pixel links vom Bildschirm störend.
Conrad B
34

Für mich war das einzige, was in Java 7 unter OS X 10.9 funktionierte, Folgendes:

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

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

Steve HHH
quelle
18

Versuchen Sie so etwas:

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

Ich bin mir nicht sicher, ob die Größe nach dem Start geändert wird. Vielleicht ist es nicht das, was Sie wollen

RoneRackal
quelle
Ist es nicht angenommen, Python zu sein
whackamadoodle3000
17

Dies funktioniert sowohl mit headlessals auch ohne Headless und startet das Fenster mit der angegebenen Größe, anstatt es nachher festzulegen:

from selenium.webdriver import Firefox, FirefoxOptions

opts = FirefoxOptions()
opts.add_argument("--width=2560")
opts.add_argument("--height=1440")

driver = Firefox(options=opts)
Tsorn
quelle
2
Das Äquivalent in Chrome ist "--window-size = 2560,1440".
Mark Raymond
9

Wenn Sie Chrom verwenden

 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)

Dies führt dazu, dass der Browser auf dem zweiten Monitor ohne störendes Flackern oder Bewegungen auf dem Bildschirm gestartet wird.

e4c5
quelle
Wissen Sie, wie man den gleichen Trick in Firefox macht? Vielleicht kannst du meine Frage beantworten .
Mykola Zotko
1

Hier sind die Standardeinstellungen für das Firefox-Profil aus Python Selen 2.31.0. Firefox_profile.py

und geben Sie "about: config" in die Firefox-Adressleiste ein, um alle Einstellungen anzuzeigen

Verweis auf die Einträge in about: config: 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",
    }
TONy.W
quelle
1
Vielen Dank. Ich sehe dort keine Einstellungen für die Browsergröße, aber es ist nützlich, die Liste und den Link gleich zu haben.
Tom
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, dass sich der Chrome-Treiber in Ihrem Systempfad befindet.

Raj Sahoo
quelle
Die Frage erfordert, dass Sie die Größe einstellen, bevor Sie den Treiber instanziieren
Jitin
0
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.window.width',0)
profile.set_preference('browser.window.height',0)
profile.update_preferences()

Schreiben Sie diesen Code in den Setup-Teil Ihres Testcodes vor der webdriver.Firefox()Zeile : .

Deniz Kaplan
quelle
2
Die Frage ist über das Einstellen der anfänglichen Fenstergröße mit Python .... Wie auch immer, dies funktioniert auch nicht mit Python, zumindest mit Selen 2.46.0 und Firefox 38.0.5
Álvaro Arranz