WWW::Mechanize::Chrome(和其他)的 WebGL
WebGL with WWW::Mechanize::Chrome (and others)
我需要 运行 一个在 iFrame 中访问 WebGL 的自动化进程 - 无头,并且在登录后。
到目前为止,我已经尝试过以不同的方式做到这一点:
- Firefox::Marionette 失败,因为它不支持 WebGL
- WWW::Mechanize::Chrome 如果我尝试 运行 它无头(但在非无头上就像一个魅力)
- WWW::Mechanize::Chrome 通过 xvfb-运行 - 失败并显示“没有类似 '/usr/bin/xvfb-run -a --server-args="-screen 0 的可执行文件1280x800x24 -ac -nolisten tcp -dpi 96 +extension RANDR" /usr/bin/google-chrome'
后者是运行这样的:
my $mech = WWW::Mechanize::Chrome->new(
headless => 0,
launch_exe => '/usr/bin/xvfb-run -a --server-args="-screen 0 1280x800x24 -ac -nolisten tcp -dpi 96 +extension RANDR" /usr/bin/google-chrome',
launch_arg => ["--headless" , "--no-sandbox"],
);
有什么我没试过但可以奏效的吗?我正在使用 perl - 但可能会不情愿地尝试 Python 如果它有机会工作。
xvfb-run
必须像这样添加到 perl 脚本中
/usr/bin/xvfb-run -a --server-args="-screen 0 1280x800x24 \
-ac -nolisten tcp -dpi 96 +extension RANDR" \
perl chrome_script.pl
所以它包装了脚本,以及其中的 chrome 实例。
我添加了 some documentation 来展示如何让 WebGL 与 Firefox::Marionette 一起工作,如果您仍然感兴趣的话。具体来说,你需要像这样初始化;
my $firefox = Firefox::Marionette->new( addons => 1, visible => 1 );
我需要 运行 一个在 iFrame 中访问 WebGL 的自动化进程 - 无头,并且在登录后。
到目前为止,我已经尝试过以不同的方式做到这一点:
- Firefox::Marionette 失败,因为它不支持 WebGL
- WWW::Mechanize::Chrome 如果我尝试 运行 它无头(但在非无头上就像一个魅力)
- WWW::Mechanize::Chrome 通过 xvfb-运行 - 失败并显示“没有类似 '/usr/bin/xvfb-run -a --server-args="-screen 0 的可执行文件1280x800x24 -ac -nolisten tcp -dpi 96 +extension RANDR" /usr/bin/google-chrome'
后者是运行这样的:
my $mech = WWW::Mechanize::Chrome->new(
headless => 0,
launch_exe => '/usr/bin/xvfb-run -a --server-args="-screen 0 1280x800x24 -ac -nolisten tcp -dpi 96 +extension RANDR" /usr/bin/google-chrome',
launch_arg => ["--headless" , "--no-sandbox"],
);
有什么我没试过但可以奏效的吗?我正在使用 perl - 但可能会不情愿地尝试 Python 如果它有机会工作。
xvfb-run
必须像这样添加到 perl 脚本中
/usr/bin/xvfb-run -a --server-args="-screen 0 1280x800x24 \
-ac -nolisten tcp -dpi 96 +extension RANDR" \
perl chrome_script.pl
所以它包装了脚本,以及其中的 chrome 实例。
我添加了 some documentation 来展示如何让 WebGL 与 Firefox::Marionette 一起工作,如果您仍然感兴趣的话。具体来说,你需要像这样初始化;
my $firefox = Firefox::Marionette->new( addons => 1, visible => 1 );