如何在 Perl 中为 Selenium::Chrome 设置 ChromeOptions(或 goog:ChromeOptions)

How To Set ChromeOptions (or goog:ChromeOptions) for Selenium::Chrome in Perl

在 Python 中,当在本地 Chrome 浏览器中使用本地 chromedriver 时,我可以轻松地将浏览器“navigator.webdriver”属性 更改为 false。

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(chrome_options=options)
driver.get([some url])

在上面之后,在Chrome浏览器控制台中,navigator.webdriver会显示“false”。

但我不知道如何将以上内容翻译成 Perl。以下代码仍会将 navigator.webdriver 保留为“true”。那么如何在 Perl 中实现上面的 Python 代码呢?是否可能(理想情况下不使用远程独立 selenium 服务器)?

use strict;
use warnings;
use Selenium::Chrome;
my $driver = Selenium::Chrome->new(
   custom_args => '--disable-blink-features=AutomationControlled' );
$driver->get([some url]);

如有任何帮助,我们将不胜感激!

需要使用 extra_capabilitiesgoog:chromeOptions

my $drv = Selenium::Chrome->new(
     'extra_capabilities' => {
         'goog:chromeOptions' => {
             prefs => { ... },
             args => [ 
                 'window-position=960,10', 'window-size=950,1180', # etc   
                 'disable-blink-features=AutomationControlled'
             ]
         }
     }
);

(我不知道 disable-blink-features 与“navigator.webdriver”有什么关系)

有关构造函数中可用的属性列表以及 extra_capabilities,请参阅 Selenium::Remote::Driver, from which Selenium::Chrome inherits

有关 Chrome-specific 功能,请参阅 "Recognized capabilities" in chromedriver, and more generally see Selenium documentation and W3C WebDriver standard


具体来说