Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading Perl Selenium::Remote::驱动程序和线程_Multithreading_Selenium_Perl - Fatal编程技术网

Multithreading Perl Selenium::Remote::驱动程序和线程

Multithreading Perl Selenium::Remote::驱动程序和线程,multithreading,selenium,perl,Multithreading,Selenium,Perl,我有一个用perl编写的程序,它使用的是同样使用线程的Selenium::Remote::Driver S:R:D不是线程友好的吗?当我启动一个线程并尝试打开一个selenium驱动程序实例时,我会得到一个随机错误(手头没有,我已经通过了)。现在,我设置了一个共享变量,使得一次只有一个selenium实例在执行命令,但我仍然会遇到错误,现在是在selenium实例中设置cookie 有办法解决这个问题吗 我的程序就是这样运行的,例如: 它们都将驱动程序设置为 $driver = Selenium

我有一个用perl编写的程序,它使用的是同样使用线程的Selenium::Remote::Driver

S:R:D不是线程友好的吗?当我启动一个线程并尝试打开一个selenium驱动程序实例时,我会得到一个随机错误(手头没有,我已经通过了)。现在,我设置了一个共享变量,使得一次只有一个selenium实例在执行命令,但我仍然会遇到错误,现在是在selenium实例中设置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]启动
[Thread 2]随机赢得了硒元素抢先比赛,does stuff
[Thread 1]等待线程2完成selenium命令。
..快进-两个线程都已完成设置…
[Thread 1]现在赢得比赛,并开始在我们所在的网页www.mywebsite.com上的租户代码中设置cookie

$driver->add_cookie(“任何”、“1”、“1”、“www.mywebsite.com”、“1”、“1”)

此线程因错误而终止

线程1异常终止:执行命令时出错:无效参数:无效参数:无效参数:在/Library/Perl/5.18/Selenium/Remote/Driver.pm第402行线程1处的“安全”(会话信息:chrome=81.0.4044.129)无效。at/Library/Perl/5.18/Selenium/Remote/Driver.pm第353行线程1。


不管我们把它改成什么,这仍然会出错,有人有什么想法吗?这真的不是线程友好的吗?我必须尝试其他方法吗?

该模块或相关模块的C组件可能不是线程安全的。有时,你可以通过从线程中加载模块来解决这个问题。是的,我也尝试过,但仍然得到了相同的结果。有可能该模块或相关模块的C组件不是线程安全的。有时你可以通过从线程中加载模块来解决这个问题。是的,我也尝试过,但仍然得到了相同的结果。