Chromedriver блокирует камеру.Работает только в первом окне - PullRequest
0 голосов
/ 27 мая 2019

Мне нужно запустить несколько окон Chrome, и в каждом из них мне нужна работающая камера.Прямо сейчас камера работает только в первом окне Chrome и блокируется этим в следующих окнах.Во втором и последующих окнах, даже на webcamtests.com, у меня есть информация, что моя камера используется в другом приложении.

Все работает нормально, когда я запускаю Chrome вручную.Эта проблема появляется, только когда я использую webdriver (chromedriver)

Я пробовал некоторые параметры Chrome, такие как:

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);

Для каждого нового окна у меня есть другой user-data-dir.Я хотел бы иметь камеру в каждом окне, а не только в первом.Есть ли какое-то решение для этого?

1 Ответ

0 голосов
/ 28 мая 2019

Я сделал несколько обходов - возможно, у кого-то такая же проблема, как и у меня:

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");
...