如何在启动 Selenium 远程控制期间调整/最大化 Firefox 窗口?
Posted
技术标签:
【中文标题】如何在启动 Selenium 远程控制期间调整/最大化 Firefox 窗口?【英文标题】:How to resize/maximize Firefox window during launching Selenium Remote Control? 【发布时间】:2010-12-04 01:58:13 【问题描述】:我正在使用 Selenium Remote Control 。在执行测试期间,实际的 Firefox 窗口非常小。我想要它全屏,所以我可以看到发生了什么。如何最大化浏览器屏幕?
【问题讨论】:
您在 Selenium-RC 中使用什么编程语言? java、C# 还是什么? 如何通过执行 Selenium WebDriver 来调整/最大化 FF? 【参考方案1】:试试 windowMaximize 命令:
selenium.windowMaximize();
您还可以使用以下命令设置特定的宽度和高度:
selenium.getEval("window.resizeTo(X, Y); window.moveTo(0,0);")
X 是宽度,Y 是高度。
【讨论】:
对于那些使用 Python 的人来说,可以预见的是,my_selenium_instance.window_maximize()
评估不适用于较新版本的 Firefox。请参阅 Eli Colner 的回答。
@BrandonRhodes,在python中它实际上是maximize_window()
【参考方案2】:
这对我有用。所有其他解决方案在 FF7 中都不起作用。
WebDriver driver = ((WebDriverBackedSelenium) selenium).getWrappedDriver();
driver.manage().window().setPosition(new Point(0, 0));
driver.manage().window().setSize(new Dimension(1920, 1080));
【讨论】:
似乎是 FF7+ 上的唯一方法(对我来说它是 OSX 上的 FF9.0.1) 只使用答案的第二两行,因为我使用没有 Selenium 的纯 Webdriver 运行。谢谢。 javascript 版本:driver.manage().window().setSize(1920, 1080);
user85461,你说的Javascript版本是什么意思?与使用 WebDriverJS 绑定的等效调用一样吗?不要让其他用户感到困惑,以为您可以将其作为纯 javascript 执行并且它会简单地工作。
只是想指出,以免其他用户误会。此代码适用于 Java(或者也可能适用于 C#)。其他 WebDriver 语言绑定的语法会有所不同,并且那些其他的不会有 WebDriverBackedSelenium 的第 1 行。【参考方案3】:
您可以执行以下操作:
page.driver.browser.manage.window.maximize
【讨论】:
其他的都不起作用。出于安全原因,一个 javascript【参考方案4】:硒 2.31.0
driver = webdriver.Firefox()
# Resize the window to the screen width/height
driver.set_window_size(300, 500)
# Move the window to position x/y
driver.set_window_position(200, 200)
【讨论】:
这应该在 Python 中?【参考方案5】:对于火狐: sel.key_press_native(122) (F11键码中的122)
【讨论】:
这是一个有趣的琐事。我不知道你能做到这一点。虽然这可能不是他想要的,但这对脚本演示很有用。【参考方案6】:我认为最好的方法是使用 selenium.windowMaximize() selenium 函数而不是操纵窗口大小。
【讨论】:
【参考方案7】:将 -singlewindow 参数传递给 Selenium RC 服务器时,提供的答案均无效。但是,如果您将 firefox 配置文件传递给 Selenium RC 服务器 (as detailed somewhat here),则可以创建一个空的配置文件文件夹并将此文件放入文件夹中:
localstore.rdf(case sensitive filename!):
<?xml version="1.0"?>
<RDF:RDF xmlns:NC="http://home.netscape.com/NC-rdf#"
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<RDF:Description RDF:about="chrome://browser/content/browser.xul#main-window"
sizemode="normal"
screenX="0"
screenY="0" />
lastSelected="paneTabs" />
<RDF:Description RDF:about="chrome://browser/content/browser.xul">
<NC:persist RDF:resource="chrome://browser/content/browser.xul#main-window"/>
<NC:persist RDF:resource="chrome://browser/content/browser.xul#PersonalToolbar"/>
<NC:persist RDF:resource="chrome://browser/content/browser.xul#nav-bar"/>
<NC:persist RDF:resource="chrome://browser/content/browser.xul#status-bar"/>
<NC:persist RDF:resource="chrome://browser/content/browser.xul#toggle_taskbar"/>
<NC:persist RDF:resource="chrome://browser/content/browser.xul#navigator-toolbox"/>
<NC:persist RDF:resource="chrome://browser/content/browser.xul#toolbar-menubar"/>
<NC:persist RDF:resource="chrome://browser/content/browser.xul#sidebar-box"/>
<NC:persist RDF:resource="chrome://browser/content/browser.xul#sidebar-title"/>
</RDF:Description>
</RDF:RDF>
将宽度和高度替换为您喜欢的宽度和高度。 9999x9999 几乎可以最大化任何显示器。
以这种方式运行 Selenium RC 服务器的最简单示例假设我们的主目录中有前面提到的 localstore.rdf,并且我们当前位于 Selenium RC 服务器的目录中:
rm -rf ~/ffProfile
mkdir ~/ffProfile
cp localstore.rdf ~/ffProfile
java -jar selenium-server-*.jar -singlewindow -firefoxProfileTemplate "~/ffProfile"
这还有一个额外的好处,那就是不会“污染”您的测试。
【讨论】:
【参考方案8】:要扩展 David Hunt 关于更具体的窗口大小调整和移动的建议,请注意以下内容。
要在大多数环境中工作,请在调整大小之前移动。那就是:
selenium.getEval("window.moveTo(X, Y); window.resizeTo(X, Y); ")
覆盖 2/3 的屏幕,便于查看下方的硒驱动窗口的一部分,并且不管您的目标屏幕分辨率如何:
selenium.getEval("window.moveTo(screen.availWidth / 3,0); window.resizeTo(screen.availWidth * (2/3), screen.availHeight); ");
【讨论】:
【参考方案9】:在 ruby 中,调用是
web_driver.manage.window.maximize
【讨论】:
以上是关于如何在启动 Selenium 远程控制期间调整/最大化 Firefox 窗口?的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上使用 Jenkins 运行 Selenium 测试期间,如何在未实际登录机器时捕获屏幕截图?