Мне нужно запустить несколько окон Chrome, и в каждом мне нужно, чтобы камера работала. На данный момент камера работает только в первом окне хрома и блокируется им в следующих окнах. Во втором и следующем окнах, даже на webcamtests.com у меня есть информация, что моя камера используется в другом приложении.
Все работает нормально, когда я запускаю Chrome вручную. Эта проблема появляется только тогда, когда я использую webdriver (chromedriver)
Я пробовал некоторые варианты хрома, такие как:
user-data-dir=/my_dir
disable-user-media-security
use-fake-ui-for-media-stream
Пробовал даже use-fake-device-for-media-stream
- получилось, но нужна настоящая камера. Этот вариант дал мне фальшивую анимацию.
Мой код прямо сейчас:
ChromeOptions options = new ChromeOptions();
options.AddArguments("user-data-dir=/ChU/UDA30");
options.AddArguments("disable-infobars");
options.AddArguments("ignore-certificate-errors");
options.AddArguments("ignore-urlfetcher-cert-requests");
options.AddArguments("disable-user-media-security");
options.AddArguments("use-fake-ui-for-media-stream");
options.AddArguments("always-authorize-plugins");
var chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true;
driver_a30 = new ChromeDriver(chromeDriverService, options);
Для каждого нового окна у меня есть другой каталог пользовательских данных. Я хотел бы иметь камеру в каждом окне, а не только в первом. Есть ли какое-нибудь решение для этого?
Я сделал обходной путь - может у кого-то такая же проблема, как у меня:
Chrome блокирует веб-камеру для нового chromedriver. Поэтому, если я хочу иметь веб-камеру во многих окнах Chrome, мне нужно, чтобы одновременно работал только один хромированный драйвер. Итак, я запускаю новые окна Chrome на том же хромированном драйвере, и тогда у меня везде работает камера.
Вот мой код:
driver_chrome.SwitchTo().Window(driver_chrome.WindowHandles.First());
SendKeys.SendWait("^(n)");
System.Threading.Thread.Sleep(500);
driver_chrome.SwitchTo().Window(driver_chrome.WindowHandles.Last());
driver_chrome.Navigate().GoToUrl("URL");