Як встановити ширину та висоту браузера в Selenium WebDriver?


79

Я використовую Selenium WebDriver для Python. Я хочу створити екземпляр браузера з певною шириною та висотою. Поки що найближче, що я можу отримати, це:

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

Що працює, але встановлює розмір браузера після його створення, і я хочу, щоб він був встановлений під час створення. Я здогадуюсь, що існує підхід, подібний до:

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

Але я не знаю, що fooце буде, і я не можу зрозуміти, де знаходяться документи.

Q1: чи є спосіб встановити ширину / висоту під час створення?

Q2: Де знаходяться посилальні документи з переліком усіх ключів, якими можна користуватися profile.set_preference?


5
Чому це погано, що після створення він змінює розмір?
Арран

Чесно кажучи, я не знаю. Строго кажучи, це інакше, як вікно, яке відкривається певного розміру (я бачу різницю). Я не знаю, чи ця різниця суттєва . Оскільки це тести, я хотів би видалити якомога більше невідомих. Якщо хтось може сказати мені, що це не має значення, я був би радий. Але їм, мабуть, потрібно було б знати особливості мого тесту, щоб це зробити, і я хочу мати можливість робити це для всіх майбутніх тестів, які я пишу.
том

2
Я б погодився з Арраном. Я не можу придумати жодної причини, чому зміна розміру після створення може спричинити проблеми.
Роббі Уерем

Відповіді:


38

Ось як я це роблю в Python із Selenium 2.48.0:

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

1
OP прямо заявляє, що вони не хочуть встановлювати його після створення. Код у питанні вже показує їх використання set_window_size.
Bryan Oakley

set_window_position(0,0)дратівливо розміщує вікно приблизно на 10 пікселів зліва від екрана.
Конрад Б

34

Для мене єдине, що працювало в Java 7 в OS X 10.9, це:

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

Де 1024ширина, а 768висота.


19

Це працює як з headlessбезголовим, так і запускає вікно із заданим розміром, а не встановлюючи його після:

from selenium.webdriver import Firefox, FirefoxOptions

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

driver = Firefox(options=opts)

3
Еквівалент у Chrome - "--window-size = 2560,1440".
Mark Raymond

18

Спробуйте щось подібне:

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

Не впевнений, що його розмір зміниться після запуску, тому, можливо, це не те, що ви хочете


Хіба це не припустимо бути
пітоном

11

Якщо ви використовуєте хром

 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)

Це призведе до того, що браузер запуститься на другому моніторі без набридливих мерехтінь або рухів по екрану.


Чи знаєте ви, як зробити той самий фокус у Firefox? Можливо, ви можете відповісти на моє запитання .
Микола Зотько

1

Ось префикси профілю Firefox за замовчуванням з python selenium 2.31.0 firefox_profile.py

і введіть "about: config" в адресному рядку Firefox, щоб переглянути всі префикси

посилання на записи в 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",
    }

1
Дякую. Я не бачу там налаштувань розміру браузера, але корисно мати однаковий список та посилання.
том

1

Це легко. Ось повний код.

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

Переконайтеся, що драйвер chrome знаходиться у вашому системному шляху.


питання вимагає встановити розмір перед створенням драйвера
Jitin

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

напишіть цей код у частину налаштування тестового коду перед webdriver.Firefox()рядком :.


2
Питання в тому, щоб встановити початковий розмір вікон за допомогою python .... У будь-якому випадку, це не працює ні за допомогою python, принаймні за допомогою селену 2.46.0 та Firefox 38.0.5
Альваро Арранц
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.