Webdriverスクリプトを実行すると、以下のようなメッセージの確認ダイアログボックスが表示されます。
Error Loading Extension
Could not load extension from 'C:\Usersername³³AppData³³Local³³Temp³³_dir6312_32763³³internal'.解凍された拡張機能のロードは管理者により無効化されています。
再試行しますか?
はい いいえ
はい」をクリックすると、テストが実行されます。
なぜこのようなダイアログボックスが表示されるのか、よくわかりません。
以下の回避策を試しましたが、どちらもうまくいきません。
1.1.クロームのドライバを最新バージョンに交換しました。 2.2. スクリプトに以下のコードを追加しました。
ChromeOptions options = new ChromeOptions();
オプション.addArguments("no-sandbox")を追加しました。
options.addArguments("disable-extensions"); option.addArguments("no-sandbox"); オプションを追加します。
driver = new ChromeDriver(options);
以下は、私のTestメソッドです。
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拡張を読み込まないようにするのに役立ちます。これにより、"Failed to load extension"ポップアップが表示されなくなります。
ただし、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
バージョンにもよりますが、私の場合は、ChromeDriver v2.27にダウングレードする必要がありました。
このエラーメッセージ。..
エラー読み込み拡張子。
'C:\ Users \ username \ AppData \ Local \ Temp \ scoped_dir6312_32763 \ internal'から拡張機能をロードできませんでした。 開梱された拡張機能のロードは、管理者によって無効になっています。
再試行しますか??
はいいいえ。
.拡張機能は管理者によって無効にされたため、ロードされなかったことを意味します。. [Issue 1749:Failed to load extention from: ... 解凍された拡張機能のロードは、管理者によって無効になっています](https://bugs.chromium.org/p/chromedriver/issues/detail?id = 1749)_ChromeDriver_は、ウィンドウサイジング、ウィンドウポジショニングなどのさまざまな機能を自動化するために_Chromeオートメーション拡張_を使用します。
ロード拡張に失敗しました。.ポップアップは、この拡張機能がロードされていないことを意味します。 ポップアップを手動で閉じると、ブラウザは正常に動作し、_ ChromeDriver_コマンドは期待どおりに動作し続けます。 ただし、この場合、ウィンドウのサイズ変更またはウィンドウの再配置コマンドを実行しようとすると、 不明なエラーとしてエラーがスローされます。自動化拡張機能を取得できません
。
組織がポリシーを管理して拡張機能を禁止する場合は常に、_ 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がウィンドウサイジングおよびウィンドウ再配置操作を実行するのに役立ちます。
したがって、組織管理ポリシーが拡張機能をブロックすると、ポップアップの表示拡張機能をロードできませんでした: ... 開梱された拡張機能のロードは予想される動作です。
この問題は、ヘッドレスのセレニウムサポートに依存していました?id = 604324)。
別の方法として、 useAutomationExtension
機能を次のように false
に設定できます。
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);
この機能inturnは、_Chrome Automation拡張機能をロードしないのに役立ちます_および 拡張機能のロードに失敗しました
ポップアップが表示されません。 ただし、_Chromeオートメーション拡張機能なしでは、ウィンドウのサイズ変更/位置決め操作を実行できません。
さて、[ヘッドレスのセレニウムサポート](https://bugs.chromium.org/p/chromium/issues/detail?id = 604324)が解決されると、_ChromeDriver_はこの拡張機能を必要としなくなり、このエラー/ポップアップが表示されるはずがありません。
ソリューション。 --------。 最も簡単な解決策は、次のいずれかの間で_ChromeDriver_と_Chrome_の組み合わせの最新バージョンを使用することです。
- Chromeバージョン73 を使用している場合は、 ChromeDriver 73.0.3683.20
をダウンロードしてください。
- Chromeバージョン72 を使用している場合は、 ChromeDriver 2.46
または ChromeDriver 72.0.3626.69
をダウンロードしてください。
- Chromeバージョン71 を使用している場合は、 ChromeDriver 2.46
または ChromeDriver 71.0.3578.137
をダウンロードしてください。
-Chromeの古いバージョンについては、この[ディスカッション]を参照してください(https://stackoverflow.com/questions/49796818/webdriverexception-message-service-usr-lib-chromium-browser-chromedriver-unex/49791#497991 )。
代替。 -----------。 他の選択肢は次のとおりです。
-Registry Key ExtensionInstallWhitelist
をホワイトリストに追加します。
-文字列キー 1 を含むRegistryキー ExtensionInstallBlacklist
を削除します。値は*` ` **です。
chrome://version/`にアクセスすると、Commandの下に表示されています。
C:³ Files (x86)³GoogleChrome ³Application³chrome.exe" --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-extensions-except="C. All Rights Reserved:\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:\UsersInno3AppData﹑Local﹑Temp﹑dir80288_30914" --flag-switches-begin --flag-switches-end data:,`.
これがエラーを出す理由です。なぜエラーが出るのか分かりませんが、ユーザーポリシーかChromeのアップデートでしょうか?
--disable-extensions-except="C:\UsersInno3³³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)
<。!-スニペットを開始:js hide:false console:true babel:false -->。
//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);
<。!-終了スニペット-->。
以下のコードは、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ブラウザを正常に呼び出します。
以下のコードは私に有効です:
useAutomationExtensionをfalseとして設定します。
options.setExperimentalOption("useAutomationExtension", false);
Fulllコード:
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}