У меня есть программа, которую я пишу на perl с использованием Selenium :: Remote :: Driver, которая также использует потоки.
Является ли S: R: D дружественным к потокам? Когда я запускаю поток и пытаюсь открыть экземпляр драйвера селена, я получаю случайную ошибку (не имею под рукой, я прошел мимо этого). На данный момент я установил общую переменную, благодаря которой только один экземпляр селена выполняет команды за раз, но я все еще сталкиваюсь с ошибками, прямо сейчас с настройкой файлов cookie в экземпляре селена.
Есть Есть ли способ обойти это?
Вот как моя программа работает, например:
они оба устанавливают драйвер как
$driver = Selenium::Remote::Driver->new( 'auto_close' => 0,
'browser_name' => 'chrome',
extra_capabilities' => {
'chromeOptions' => {
'args' => ['window-size=1920,1080',
'blink-settings=imagesEnabled=false']}});
[Тема 1] Запускается
[ Поток 2] Начинается
[Поток 2] Случайно выиграл гонку получения селена первым, делает вещи
[Поток 1] Ждет, пока поток 2 завершит выполнение команд селена.
.... Перемотка вперед Потоки закончили настройку ....
[Тема 1] Теперь выигрывает гонку и начинает устанавливать повара ie в коде своего регистра здесь. Селеновый экземпляр на веб-странице, на которой мы находимся, www.mywebsite.com
$driver->add_cookie("anything", "1", "/", 'www.mywebsite.com','1','1');
этот поток завершается из-за ошибки
Thread 1 terminated abnormally: Error while executing command: invalid argument: invalid argument: invalid 'secure' (Session info: chrome=81.0.4044.129) at /Library/Perl/5.18/Selenium/Remote/Driver.pm line 402 thread 1. at /Library/Perl/5.18/Selenium/Remote/Driver.pm line 353 thread 1.
Независимо от того, на что мы его изменим, все равно будет ошибка, у любого есть Любые идеи? это действительно просто не дружественный поток, и я должен попробовать что-то еще?