很抱歉,如果已经询问并回答了这个问题。我做了一个搜索但是空了。
答案 0 :(得分:11)
使用Selenium Driver的窗口定位命令:
var monitor = Screen.FromPoint(new Point(Screen.PrimaryScreen.Bounds.Right + 1, Screen.PrimaryScreen.Bounds.Top));
var seleniumDriver = new ChromeDriver(options);
seleniumDriver.Manage().Window.Position = new Point(monitor.Bounds.X, monitor.Bounds.Y);
var coypuDriver = new MultimonWebDriver(seleniumDriver, Browser.Chrome);
var rv = new BrowserSession(sessionConfiguration, coypuDriver);
使用命令行参数配置驱动程序。我更喜欢这个,因为在处理移动命令之前,解决方案#1会导致显示窗口的驱动程序服务器闪烁:
var monitor = Screen.FromPoint(new Point(Screen.PrimaryScreen.Bounds.Right + 1, Screen.PrimaryScreen.Bounds.Top));
var options = new ChromeOptions();
options.AddArgument(String.Format("--window-position={0},{1}", monitor.Bounds.X, monitor.Bounds.Y));
var seleniumDriver = new ChromeDriver(options);
var coypuDriver = new MultimonWebDriver(seleniumDriver, Browser.Chrome);
var rv = new BrowserSession(sessionConfiguration, coypuDriver);
其中MultimonWebDriver只是公开对受保护构造函数的访问:
public class MultimonWebDriver : SeleniumWebDriver
{
public MultimonWebDriver(IWebDriver webDriver, Browser browser) : base(webDriver, browser)
{
}
}
答案 1 :(得分:9)
在python中:
browser = webdriver.Chrome()
browser.set_window_position(2000, 0)
答案 2 :(得分:6)
实际上有一种相当简单的方法可以做到这一点。有一个名为'set_window_position'的方法接受负值。所以我希望浏览器在我的左侧屏幕上打开,因此一个简单的负1000px像素将其拖动到足以使maximize_window选择左侧屏幕。
driver.set_window_position(-1000, 0)
driver.maximize_window()
因此,根据屏幕尺寸和您想要的位置,进行一些计算并将其拖到那里!
来源:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.firefox.webdriver(本例选择了Firefox)
答案 3 :(得分:5)
在OS X Mavericks中,您可以在从Dock中单击并按住图标时从“选项”菜单中指定桌面。这解决了我的问题。
答案 4 :(得分:4)
我使用这个并不是很花哨,而是快速实现这一目标的方法。因为我不仅希望它在我的第二个屏幕上,而且最大化我不必在坐标上过于精确。任何高于2000的X坐标通常都在我的所有开发机器的第二个屏幕上:(此示例使用chromedriver,但适用于任何IWebDriver)
chrome = new ChromeDriver();
chrome.Manage().Window.Position = new System.Drawing.Point(2000, 1); // To 2nd monitor.
chrome.Manage().Window.Maximize();
答案 5 :(得分:4)
对于在辅助监视器上运行测试进行调试非常有用。遗憾的是,您无法指定应打开哪个监视器浏览器。选项包括:
此外,您可以使用将在第二台显示器上运行的虚拟机 - 只需将其拖动到那里。
答案 6 :(得分:1)
我的解决方案是安装VNC服务器,在其中一个监视器中打开VNC,然后通过VNC启动selenium。 然后你总是有一个用于selenium浏览器的监视器,而不会在每次启动测试时打开烦人的窗口
答案 7 :(得分:1)
如果您运行的是Windows 7或更高版本,则可以通过在“更改显示设置”下将所需的显示设置为主显示来实现此目的(hack-ishly)。任何新的浏览器窗口现在都将在此打开。保持主要,这当然会影响你的工具栏等,这可能会或可能不会令人讨厌。它肯定不会比稳定地在你的脸上抛出浏览器窗口那么烦人。
答案 8 :(得分:1)
我将浏览器窗口移动到第二个显示器并在那里最大化(参见下面的代码)。 我有2台1920x1080显示器。
//// 1. Get screen resolution
java.awt.Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
if (width <= 1920) {
//// 2. Move browser to second monitor and maximize
Point point = new Point(width, 0);
driver.manage().window().setPosition(point);
driver.manage().window().maximize();
} else {
//// 3. If your resolution is wider than a typical monitor,
//// open the browser in a more realistic resolution
Point point = new Point(0, 0);
driver.manage().window().setPosition(point);
Dimension targetWindowSize;
targetWindowSize = new Dimension(1920, 1080);
driver.manage().window().setSize(targetWindowSize);
}
答案 9 :(得分:1)
Wailord的答案对我有用,但是它总是打开窗口然后移动它。所以有一小段时间它阻碍了我的编辑器。
Chrome浏览器具有用于窗口位置的命令行开关
--window-position=x,y
https://peter.sh/experiments/chromium-command-line-switches/#window-position
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('window-position=2000,0') # opens at x=2000,y=0 from the start
driver = webdriver.Chrome(options=options)
答案 10 :(得分:1)
使用这种观点:
WebDriver chrome1 = new ChromeDriver();
WebDriver chrome2 = new ChromeDriver();
chrome1.manage().window().maximize();//display 1
chrome2.manage().window().setPosition(new Point(2000,0));//display 2
Thread.sleep(1000);// 1 sec
chrome2.manage().window().maximize();//maximize display 2
答案 11 :(得分:0)
我找到了一种解决方法,在我的情况下,它在 Windows 10 中对我有用。我只是通过显示设置将我的第二台显示器作为主显示器:
Main Display via Display Settings
希望这对你也有帮助!
答案 12 :(得分:0)
在Mac上,您可以在System Preferences > Displays > Arrangement
中控制它
主屏幕顶部有一个白色栏。将其拖到要呈现浏览器的屏幕上
答案 13 :(得分:0)
只需将Mac的“菜单栏”放在要打开浏览器的监视器上。设置默认监视器。
答案 14 :(得分:0)
如果要打开浏览器窗口的监视器位于带有IDE的监视器的左位置,请尝试使用负值。在Java中:
WebDriver driver = new FirefoxDriver();
driver.manage().window().setPosition(new Point(-1500, 0));
答案 15 :(得分:0)
我注意到对我来说它始终在主监视器中打开。所以我从OSX显示排列选项窗口更改了主显示。
答案 16 :(得分:0)
我注意到通过设置以下内容,我的浏览器始终在同一台显示器中打开(我有两台显示器eDP和一台辅助HDMI显示器)。也许这与职位有关:
# console log
d = desired_capabilities.DesiredCapabilities.CHROME
d['loggingPrefs'] = { 'browser':'ALL' }
# Driver
self.driver = webdriver.Chrome(desired_capabilities=d)
self.driver.implicitly_wait(5) # seconds
self.driver.set_window_size(800, 800)
self.driver.set_window_position(0, 0)
答案 17 :(得分:0)
Java :
//imports:
import java.awt.*;
import java.awt.event.InputEvent;
driver = new FirefoxDriver();
//drag & drop to my right screen in debug mode:
boolean isDebug = java.lang.management.ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("jdwp") >= 0;
if(isDebug) {
Robot robot = new Robot();
robot.mouseMove(800, 10);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(2800, 100);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
driver.manage().window().maximize();
}
driver.manage().window().setPosition(point);
对我不起作用。