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


77

我正在使用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:有没有一种方法可以在实例化时设置宽度/高度?

问题2:参考文档在哪里列出了所有可用的密钥profile.set_preference


5
为什么在创建后重新调整大小是一件坏事?
阿兰(Arran)2013年

老实说,我不知道。严格来说,这与以特定大小打开窗口不同(我可以看到区别)。我不知道这种区别是否重大。看到这些是测试,我想删除尽可能多的未知数。如果有人能告诉我这没什么关系,那我会很高兴的。但是他们可能需要知道我的测试细节才能做到这一点,而我希望能够对我编写的所有将来的测试都做到这一点。
汤姆(Tom)2013年

2
我会同意阿兰的说法。我想不出为什么创建后重新调整大小会引起问题的任何原因。
罗比·韦勒姆

Answers:


35

这是我在带有Selenium 2.48.0的Python中执行的操作:

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

1
OP明确表示他们不想在创建后进行设置。问题中的代码已经使用显示了set_window_size
布莱恩·奥克利

set_window_position(0,0)烦人地将窗口置于屏幕左侧约10个像素处。
康拉德B

34

对我而言,在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高度。


18

尝试这样的事情:

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

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


是不是想成为蟒蛇
whackamadoodle3000

16

这适用于headless非无头模式,并且将以指定的大小启动窗口,而不是在之后设置窗口:

from selenium.webdriver import Firefox, FirefoxOptions

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

driver = Firefox(options=opts)

2
Chrome中的等效项是“ --window-size = 2560,1440”。
Mark Raymond

9

如果您使用的是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)

这将导致浏览器在第二个监视器上启动,而不会在屏幕上产生任何烦人的闪烁或移动。


您知道如何在Firefox中执行相同的技巧吗?也许你可以回答我的问题
Mykola Zotko

1

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

并在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",
    }

1
谢谢。我没有在其中看到浏览器大小设置,但是使列表和链接都相同很有用。
汤姆(Tom)2013年

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的工作,至少使用硒2.46.0和Firefox 38.0.5
阿尔瓦罗ARRANZ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.