Webdriverスクリプトを実行すると、次のメッセージを含む確認ダイアログボックスが表示されます。
拡張機能の読み込みエラー
「C:\ Users\username\AppData\Local\Temp\scoped_dir6312_32763\internal」から拡張機能をロードできませんでした。解凍された拡張機能のロードは、管理者によって無効にされています。
再試行しますか?
はい・いいえ
[はい]をクリックすると、テストが実行されます。
このダイアログボックスが表示される理由はわかりませんが、
下記の回避策を試しましたが、どちらも機能していません:
私のスクリプトに以下のコードを追加しました:
ChromeOptions options = new ChromeOptions();
options.addArguments("no-sandbox");
options.addArguments("disable-extensions");
driver = new ChromeDriver(options);
以下は私のテスト方法です:
public void Login() throws IOException{
test = extent.startTest("Login");
signInPage = new SignInPage(driver);
signInPage.enterMailId();
String screenShotPath = GetScreenShot.capture(driver, "enterMailId");
test.log(LogStatus.PASS, "Email id is entered successfully: " + test.addScreenCapture(screenShotPath));
signInPage.enterpwd();
//test.log(LogStatus.INFO, "Password is entered successfully");
screenShotPath = GetScreenShot.capture(driver, "enterpwd");
test.log(LogStatus.PASS, "Password is entered successfully: " + test.addScreenCapture(screenShotPath));
signInPage.clickOnLogin();
test.log(LogStatus.PASS, "User logged in successfully");
}
以下は、ブラウザを呼び出すメソッドです。
private void initChromeBrowser(){
System.setProperty("webdriver.chrome.driver", userdir +"\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");
options.addArguments("no-sandbox");
//Fix for cannot get automation extension
options.addArguments("disable-extensions");
options.addArguments("start-maximized");
options.addArguments("--js-flags=--expose-gc");
options.addArguments("disable-plugins");
options.addArguments("--enable-precise-memory-info");
options.addArguments("--disable-popup-blocking");
options.addArguments("--disable-default-apps");
options.addArguments("test-type=browser");
options.addArguments("disable-infobars");
driver = new ChromeDriver(options);
launchApp();
}
ダイアログボックスを防ぐために、スクリプトに組み込む必要のあるものは他にありますか。
useAutomationExtension
機能をfalseに設定できます。
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);
この機能は、Chrome Automation拡張機能をロードしません。そのため、 "拡張機能のロードに失敗しました"ポップアップは表示されません。
ただし、Chromeオートメーション拡張機能がないと、ウィンドウのサイズ変更/配置操作を実行できないことに注意してください。
お役に立てれば!
ソース: https://bugs.chromium.org/p/chromedriver/issues/detail?id=1749
ChromeDriver v2.29にアップグレードした後、この同じ問題が発生しました。 Chrome v58.0。未解決の問題のようです。 https://bugs.chromium.org/p/chromedriver/issues/detail?id=639#c26
YMMVのバージョンに応じて、私の場合、ChromeDriver v2.27にダウングレードする必要がありました。
このエラーメッセージ...
拡張機能の読み込みエラー
「C:\ Users\username\AppData\Local\Temp\scoped_dir6312_32763\internal」から拡張機能をロードできませんでした。解凍された拡張機能のロードは、管理者によって無効にされています。
再試行しますか?
はい・いいえ
...拡張機能は管理者によって無効にされたため、ロードされなかったことを意味します。
Issue 1749:からのエクステンションのロードに失敗しました:...展開されていない拡張機能のロードは管理者によって無効にされていますChromeDriver使用Chromeオートメーション拡張機能ウィンドウのサイズ変更、ウィンドウの配置など、さまざまな機能を自動化する.
拡張機能のロードに失敗しました。 popupは、この拡張機能がロードされていないことを意味します。ポップアップを手動で閉じると、ブラウザは正常に動作し、ChromeDriverコマンドは期待どおりに機能し続けます。ただし、この場合、ウィンドウのサイズ変更またはウィンドウの再配置コマンドを実行しようとすると、unknown error: cannot get automation extension
としてエラーがスローされます。
ChromeDriver v2.28組織がポリシーを拡張することを禁止している場合、ユーザーが次のように引数disable-extensions
を使用している制限を回避するために:
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(options);
完璧に機能しました。
ChromeDriver v2.28以降、テストでdisable-extensions
フラグが渡されるたびにChromeDriver暗黙的に渡されますdisable-extensions-except
順番にロードされるフラグ- Chrome自動化拡張機能。この拡張機能は、Chromedriverがウィンドウのサイズ変更とウィンドウの再配置操作を実行するのに役立ちます。
したがって、組織の管理ポリシーが拡張機能をブロックしている場合、ポップアップの表示から拡張機能をロードできませんでした:...展開された拡張機能のロードは予想される動作です。
この問題は ヘッドレスのSeleniumサポート に依存していました。
別の方法として、次のようにuseAutomationExtension
機能をfalse
に設定できます。
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);
この機能は、ロードしないようにするのに役立ちますChrome Automation拡張およびFailed to load extension
ポップアップは表示されません。ただし、Chromeオートメーション拡張機能を使用しないと、ウィンドウのサイズ変更/配置操作を実行できません。
現在、 ヘッドレスのSeleniumサポート 解決中ChromeDriverはこの拡張機能を必要としなくなり、このエラー/ポップアップは表示されないはずです。
最も簡単な解決策は、最新バージョンのChromeDriverおよびChromeを次のいずれかで組み合わせて使用することです。
ChromeDriver 73.0.3683.20
ChromeDriver 2.46
またはChromeDriver 72.0.3626.69
をダウンロードしてくださいChromeDriver 2.46
またはChromeDriver 71.0.3578.137
をダウンロードしてください他の選択肢は次のとおりです。
ExtensionInstallWhitelist
をホワイトリストに追加しますExtensionInstallBlacklist
を削除します1値と*
_chrome://version/
_に移動すると、コマンドの下に表示されます:
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-extensions --disable-extensions-except="C:\Users\Inno3\AppData\Local\Temp\scoped_dir80288_6333\internal" --disable-hang-monitor --disable-popup-blocking --disable-Prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --force-fieldtrials=SiteIsolationExtensions/Control --ignore-certificate-errors --log-level=0 --metrics-recording-only --no-first-run --password-store=basic --remote-debugging-port=12354 --safebrowsing-disable-auto-update --start-maximized --test-type=webdriver --use-mock-keychain --user-data-dir="C:\Users\Inno3\AppData\Local\Temp\scoped_dir80288_30914" --flag-switches-begin --flag-switches-end data:,
これがエラーをスローする理由です。エラーが発生する理由はわかりません。ユーザーポリシーまたはChromeアップデート?
_--disable-extensions-except="C:\Users\Inno3\AppData\Local\Temp\scoped_dir80288_6333\internal"
_
この引数はSeleniumによって追加されたと思います。Seleniumに追加しないように指示するには、次のコマンドが必要です。
C#の場合:
_chromeOptions = OpenQA.Selenium.Chrome.ChromeOptions();
chromeOptions.AddAdditionalCapability("useAutomationExtension", false);
river = new ChromeDriver(chromeOptions);
launchApp();
_
Javaの場合:
_chromeOptions.AddAdditionalCapability("useAutomationExtension", false)
_
以下のコードは私のために正常に動作していますchromeドライバ2.41およびブラウザバージョン68.0.3440.84
public class patCheck {
WebDriver driver;
@Test
public void f() {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\shirish.nagar\\Work\\Selenium\\Web\\Drivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.get("https://www.google.com");
}
}
「管理者によって無効化された拡張機能の読み込み」のポップアップなしでchromeブラウザが正常に呼び出されます
ChromeOptions options = new ChromeOptions();
System.setProperty("webdriver.chrome.driver", "C:\\drivers\\chromedriver.exe");
options.setExperimentalOption("useAutomationExtension", false);
driver = new ChromeDriver(options);
//Set the system property for chrome browser location
System.setProperty("webdriver.chrome.driver", Global.sChromeDriverPath);
//Set the Chrome capabilities
ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");
options.addArguments("start-maximized");
options.addArguments("--js-flags=--expose-gc");
options.addArguments("--enable-precise-memory-info");
options.addArguments("--disable-popup-blocking");
options.addArguments("--disable-default-apps");
options.addArguments("--enable-automation");
options.addArguments("test-type=browser");
options.addArguments("disable-infobars");
options.addArguments("disable-extensions");
options.setExperimentalOption("useAutomationExtension", false);
Global.driver = new ChromeDriver(options);
以下のコードは私のために働く:
UseAutomationExtensionをfalseに設定します
options.setExperimentalOption("useAutomationExtension", false);
完全なコード:
System.setProperty("webdriver.chrome.driver", "C:\\Selenium Drivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setAcceptInsecureCerts(true);
options.merge(capabilities);
options.addArguments("--test-type");
options.addArguments("start-maximized");
options.addArguments("--js-flags=--expose-gc");
options.addArguments("--enable-precise-memory-info");
options.addArguments("--disable-popup-blocking");
options.addArguments("--disable-default-apps");
options.addArguments("--enable-automation");
options.addArguments("disable-extensions");
options.setExperimentalOption("useAutomationExtension", false);
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--no-sandbox");
options.addArguments("disable-infobars");
driver = new ChromeDriver(options);
driver.get("https://www.google.com/");
WindowsレジストリのChromeブラックリストの*エントリを削除するなど、多くのことを試してみました(これは、企業グループポリシーによって週に数回元に戻されるため、痛みを伴うハックです)。次のコードでは、「エラー読み込み拡張機能」ポップアップが表示されなくなりました。
${options}= Evaluate sys.modules['Selenium.webdriver'].ChromeOptions() sys, Selenium.webdriver
Call Method ${options} add_argument --start-maximized
Call Method ${options} add_experimental_option useAutomationExtension ${False}
Create WebDriver Chrome chrome_options=${options}