如何在 Selenium WebDriver 中设置浏览器宽度和高度?
Posted
技术标签:
【中文标题】如何在 Selenium WebDriver 中设置浏览器宽度和高度?【英文标题】:How do I set browser width and height in Selenium WebDriver? 【发布时间】:2013-03-02 02:32:51 【问题描述】:我正在为 Python 使用 Selenium WebDriver。 我想实例化具有特定宽度和高度的浏览器。到目前为止,我能得到的最接近的是:
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
可用的所有密钥的参考文档在哪里?
【问题讨论】:
为什么在创建后调整大小是一件坏事? 老实说,我不知道。严格来说,它不同于以特定大小打开的窗口(我可以看到差异)。我不知道这种差异是否是material。鉴于这些是测试,我想尽可能多地删除未知数。如果有人可以告诉我这没有区别,那么我会很高兴。但他们可能需要知道我的测试细节才能做到这一点,而且我希望能够为我编写的所有未来测试做到这一点。 我同意阿兰的观点。我想不出为什么在创建后调整大小会导致问题。 【参考方案1】:这是一个适用于无头和非无头模式的解决方案,它将以指定的大小启动窗口,而不是在之后设置它:
铬:
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
opts = Options()
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)
【讨论】:
Chrome 中的等价物是“--window-size=2560,1440”。【参考方案2】:我尝试了下面的代码来设置 mac chrome 和 windows chrome 的分辨率。
driver.manage().window().setSize(new Dimension(1280, 768));
使用以下代码测试分辨率变化:-
Dimension dimension = driver.manage().window().getSize();
LOGGER.info("dimension is " + dimension);
【讨论】:
【参考方案3】:这很容易。这是完整的代码。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("Your URL")
driver.set_window_size(480, 320)
确保 chrome 驱动程序位于您的系统路径中。
【讨论】:
问题要求你在实例化驱动之前设置大小 这对我有用 这只会在窗口加载后发生。【参考方案4】:如果你使用的是 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 中做同样的事情吗?也许你可以回答my question。【参考方案5】:这是我在 Python 中使用 Selenium 2.48.0 的方法:
from selenium.webdriver import Firefox
driver = Firefox()
driver.set_window_position(0, 0)
driver.set_window_size(1024, 768)
【讨论】:
OP 明确表示他们不想在创建后设置它。问题中的代码已经使用set_window_size
显示了它们。
set_window_position(0,0)
令人讨厌地将窗口定位在屏幕左侧约 10 像素处。【参考方案6】:
对我来说,在 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
是高度。
【讨论】:
【参考方案7】:profile = webdriver.FirefoxProfile()
profile.set_preference('browser.window.width',0)
profile.set_preference('browser.window.height',0)
profile.update_preferences()
将此代码写入测试代码的设置部分,在:webdriver.Firefox()
行之前。
【讨论】:
问题是关于使用 python 设置初始窗口大小....无论如何,这对于使用 python 都不起作用,至少使用 selenium 2.46.0 和 Firefox 38.0.5【参考方案8】:这是来自 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",
【讨论】:
谢谢。我没有在其中看到浏览器大小设置,但让列表和链接完全相同是很有用的。【参考方案9】:试试这样的:
IWebDriver _driver = new FirefoxDriver();
_driver.Manage().Window.Position = new Point(0, 0);
_driver.Manage().Window.Size = new Size(1024, 768);
不确定它是否会在启动后调整大小,所以可能不是你想要的
【讨论】:
不应该是python以上是关于如何在 Selenium WebDriver 中设置浏览器宽度和高度?的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Selenium Webdriver 中设置 cookie
如何在不同浏览器中运行Selenium WebDriver?
Selenium Webdriver - 设置首选浏览器语言DE
远程 Selenium WebDriver 不响应 Cucumber 测试
Selenium:我可以在 Selenium 中设置 WebElement 的任何属性值吗?
如何使用 Java 在 selenium webdriver 中打开新选项卡,或者如何使用 selenium webdriver 使用动作类在 selenium 中按 ctrl + T [重复]