如何在Selenium WebDriver中设置浏览器的宽度和高度?

问题描述 投票:0回答:10

我正在使用 Selenium WebDriver for 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
可用的所有键的参考文档在哪里?

python selenium-webdriver screen-resolution window-size
10个回答
64
投票

这是一个适用于无头和非无头模式的解决方案,并且将以指定的大小启动窗口,而不是在之后设置它:

铬:

from selenium.webdriver import Chrome, ChromeOptions

opts = ChromeOptions()
opts.add_argument("--window-size=2560,1440")

driver = Chrome(options=opts)

火狐:

from selenium.webdriver import Firefox, FirefoxOptions

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

driver = Firefox(options=opts)

53
投票

这是我在 Python 中使用 Selenium 2.48.0 执行此操作的方法:

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

46
投票

对我来说,在 OS X 10.9 上的 Java 7 中唯一有效的是:

// 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
投票

尝试这样的事情:

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

不确定启动后是否会调整大小,所以也许这不是你想要的


13
投票

如果您使用的是 Chrome

 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)

这将导致浏览器在第二台显示器上启动,而不会在屏幕上出现任何烦人的闪烁或移动。


4
投票

这很容易。这是完整的代码。

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

确保 chrome 驱动程序位于您的系统路径中。


1
投票

这是来自 python selenium 2.31.0 firefox_profile.py 的 firefox 配置文件默认首选项

然后在 Firefox 地址栏中输入“about:config”即可查看所有首选项

参考 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",
    }

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

将此代码写入测试代码的设置部分,位于:

webdriver.Firefox()
行之前。


0
投票

我尝试了下面的代码来设置 mac chrome 和 windows chrome 上的分辨率。

driver.manage().window().setSize(new Dimension(1280, 768));

使用以下代码来测试分辨率变化:-

Dimension dimension = driver.manage().window().getSize();
LOGGER.info("dimension is " + dimension);

0
投票

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--window-size=1920,1080")
driver = webdriver.Chrome(options=options)

Microsoft Edge

from selenium import webdriver

options = webdriver.EdgeOptions()
options.add_argument("--window-size=1920,1080")
driver = webdriver.Edge(options=options)
根据 Github 中的

代码Firefox 很棘手:

from selenium import webdriver

options = webdriver.FirefoxOptions()
options.add_argument("--width=1920")
options.add_argument("--height=1080")
driver = webdriver.Firefox(options=options)
© www.soinside.com 2019 - 2024. All rights reserved.