Подтвердить что ты не робот

В среде отображения с несколькими мониторами, как я могу показать Selenium, который отображает, чтобы открыть новое окно?

Извините, если об этом спросили и ответили. Я сделал поиск, но подошел пустой.

4b9b3361

Ответ 1

Это очень полезно для отладки для запуска тестов на вторичном мониторе. К сожалению, вы не можете указать, какой браузер браузера должен быть открыт. Возможные варианты:

  • Откройте браузер и перетащите его на нужный монитор, затем закройте его. В следующий раз он будет открыт на этом мониторе
  • Используйте программное обеспечение, например Ultramon, чтобы контролировать, на каком мониторе запускается браузер.

Также вы можете использовать виртуальную машину, которая будет запущена на втором мониторе - просто перетащите ее туда.

Ответ 2

Два параметра (это для coypu wrapper):

  • Используйте команды выбора окна 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)
  {
  }
}

Ответ 3

В python:

browser = webdriver.Chrome()
browser.set_window_position(2000, 0)

Ответ 4

В OSX Mavericks вы можете назначить destop из меню Options, щелкая и удерживая значок со скамьи подкачки. Это решило проблему для меня.

Ответ 5

Там на самом деле довольно простой способ сделать это. Есть метод set_window_position, который принимает отрицательные значения. Поэтому я хотел, чтобы браузер открывался на моем левом экране, поэтому простые отрицательные пиксели в 1000 пикселей перетаскивали его так, чтобы окно maximize_window могло выбрать левый экран.

driver.set_window_position(-1000, 0)
driver.maximize_window()

Поэтому, в зависимости от размеров экрана и того, куда вы хотите его поместить, сделайте некоторые расчеты и просто перетащите его туда!

Источник: http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.firefox.webdriver (выбрал Firefox для этого примера)

Ответ 6

Я использую этот не очень причудливый, но быстрый метод для достижения этого. Потому что я не только хочу его на втором экране, но и максимизирую, мне не нужно быть слишком точным по координатам. Любая X-координата выше 2000 обычно находится на втором экране для всех моих машин-разработчиков: (В этом примере используется chromedriver, но работает с любым IWebDriver)

chrome = new ChromeDriver();
chrome.Manage().Window.Position = new System.Drawing.Point(2000, 1); // To 2nd monitor. 
chrome.Manage().Window.Maximize();

Ответ 7

Мое решение - установить VNC-сервер, открыть VNC на одном из мониторов и запустить селен через VNC. Тогда у вас всегда есть один монитор для браузеров селена без раздражающих окон, открытых каждый раз при запуске теста.

Ответ 8

Если вы используете Windows 7 или более позднюю версию, вы можете добиться этого, установив нужный экран в качестве основного дисплея в разделе "Изменить параметры отображения". В этом случае откроются новые окна браузера. Следите за тем, чтобы это, конечно, повлияло на вашу панель инструментов и т.д., Что может быть или не быть раздражающим. Это, конечно, менее раздражает, чем браузерные окна, брошенные вам в лицо на постоянной основе.

Ответ 9

У меня 2 монитора 1920x1080, я перемещаю окно браузера на второй монитор и максимизирую его там.

  1. Получить разрешение экрана

    java.awt.Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    double width = screenSize.getWidth();
    double height = screenSize.getHeight();
    
  2. Переместить браузер на второй монитор и развернуть

    if (width <= 1920) {
        Point point = new Point(width, 0);
        driver.manage().window().setPosition(point);
        driver.manage().window().maximize();
    }
    
  3. Если ваше разрешение шире, чем у обычного монитора, откройте браузер в более реалистичном разрешении

    else 
    
    {
        Point point = new Point(0, 0);
        driver.manage().window().setPosition(point);
    
        Dimension targetWindowSize = new Dimension(1920, 1080);
        driver.manage().window().setSize(targetWindowSize);
    }
    

Ответ 10

используйте это условие:

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

Для 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); не работал у меня.

Ответ 12

Я заметил, что, установив эти вещи ниже, мой браузер открывается всегда на одном мониторе (у меня есть два монитора 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)

Ответ 13

Я заметил, что для меня он всегда открывается на основном мониторе. Поэтому я изменил основной экран из окна настроек отображения OSX.

Ответ 14

Если монитор, в котором вы хотите открыть окна браузера, находится слева от монитора с IDE, попробуйте отрицательные значения. В Java:

WebDriver driver = new FirefoxDriver();
driver.manage().window().setPosition(new Point(-1500, 0));

Ответ 15

Просто поместите "Строка меню" Mac на монитор, где вы хотите, чтобы браузер открывался. Это устанавливает монитор по умолчанию.

Ответ 16

Ответ 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)

Ответ 17

На Mac вы можете контролировать это в System Preferences > Displays > Arrangement

В верхней части основного экрана есть белая полоса. Перетащите его на экран, где вы хотите, чтобы браузеры отображались