Chromeでポップアップ開発者モードの拡張機能を無効にする
先週の最新リリースのchrome(34.0.1847.116)以来、watir-webdriverを使って自動テストを実行すると、「開発者モード拡張を無効にする」を受け取っています。
これは不快な拡張と思われますが、これがクロームドライバーによって使用されることを考えると、これが潜在的に危険な拡張であることは私には意味がありません。
私は前のバージョンにロールバックすることも、ロールバックするために古いバージョンのインストーラーを見つけることもできないので、これのための修正を見つけた誰でも、そしてこれは私のテストで大混乱をしています。
ポップアップを無効にする 正式な方法 は次のようになります。
あなたの拡張機能をパックし(
chrome://extensions/
、 'Developer mode'でチェックし、 'Pack extension ...'を押して)、.crx
ファイルをchrome://extensions
ページにドラッグアンドドロップしてインストールしてください。(この段階でChromeを再起動しようとすると、 "Unsupported extensions disabled"というポップアップが表示されます)
そしてWin7/8の場合:
- 次からChromeグループポリシーテンプレートをダウンロードしてください。
http://dl.google.com/dl/edgedl/chrome/policy/policy_templates.Zip
[Zip]\windows\admx\chrome.admx
をc:\windows\policydefinitions
にコピーする[Zip]\windows\admx\[yourlanguage]\chrome.adml
をにコピーしてくださいc:\windows\policydefinitions\[yourlanguage]\chrome.adml
(c:\windows\[yourlanguage]
ではない)- Chromeで、[拡張機能]ページに移動します( chrome:// extensions )
- 上部にある[開発者モード]チェックボックスをオンにします。
- 無効になっている拡張機能のリストを下にスクロールして、有効にしたい拡張機能のIDをメモします。たとえば、LogMeInはID:
nmgnihglilniboicepgjclfiageofdfj
です。 Start
>Run
をクリックし、gpedit.msc
<ENTER>
と入力します。User Configuration
>Administrative Templates
>Google Chrome
>Extensions
を展開します- ダブルクリックして
Configure extension installation whitelist
ポリシーを開く Enabled
を選択してからShow...
をクリックします- リストに、ステップ7で書き留めた内線番号のIDを入力します。
OK
をクリックしてChromeを再起動します
それでおしまい!
2018年7月現在、このアプローチはもはや機能していません。Googleが「ホワイトリスト」を称えることをやめたようです
編集:10/16/2018の時点で、このアプローチはうまくいきます。 (Chromeバージョン69.0.3497.100(正式版)(64ビット))
1.chrome:// extensions /で開発者モードを一時的に有効にします
2.「Load unpacked」を使って、インストールしたエクステンションを(正確にはポップアップを表示するエクステンションを)アンインストールします。
あなたがそれを持っていない場合は、パック拡張子をクリックしてファイルのルートディレクトリを入力します(拡張子の原因となるエラーごとに1つのフォルダ/ 1つのフォルダに拡張子ファイルを置きます)。
4.クリックパック拡張子.crxおよび.pemファイルが拡張子のルートディレクトリの近くに作成されます。 crxファイルを使用して拡張機能をインストールし、pemファイルを安全に保管してください(それを削除したり、それ以外の方法で問題が発生した場合は、いつでも拡張機能を再パックできます)。
5. crxがインストールした拡張機能IDをホワイトリストにコピーしてChromeを再起動します。
ポップアップは消えます。
クロムドライバを作成している間、それを無効にするオプションを使用してください。拡張なしで動作します。
次のコードスニペットを使用してください
ChromeOptions options = new ChromeOptions();
options.addArguments("chrome.switches","--disable-extensions");
System.setProperty("webdriver.chrome.driver",(System.getProperty("user.dir") + "//src//test//resources//chromedriver_new.exe"));
driver = new ChromeDriver(options);
Windowsでは 2015年5月 Chrome beta/dev/canary (75〜78行目を参照)では常にこの警告が表示されます。
Hiew32デモ版を使用してchrome.dll(devチャンネル、32ビット)にパッチを適用しました。それを実行し、16進表示に切り替え(キーを入力)、ExtensionDeveloperModeWarning(F7)を検索次にF6キーを押して参照コードを見つけ、近くのINC EAX行に移動します。その後にRETNキーを押し、F3キーを押して編集します。代わりに90と入力します。 40、NOP(no-op)としてレンダリングされ、保存されます(F9)。
64ビットのChrome devでも動作する@Gsxによる簡単な方法です。
- (管理モードで)hiew32デモを実行してChrome.dllを開く
- 16進表示に切り替えます(
Enter
キー) - ExtensionDeveloperModeWarning(
F7
)を検索してください。 F3
を押して、最初の文字「E」を編集して他の文字に置き換えます。- 保存(
F9
)。
patch.BAT
スクリプト
もちろん、これは次のアップデートまでしか続かないので、頻繁にそれを必要とする人は誰でもメモリにdllをパッチするオートパッチャーやランチャーを書くかもしれません。
無効にすることはできません。引用: 「すみません、迷惑なことはわかっていますが、マルウェア作成者は...」
唯一の選択肢は、自動テストをこの新しい動作に適応させるか、問題のあるスクリプトをChromeウェブストアにアップロードすることです(これは「リストにない」方法で行うことができます)。
(Antony Hatchkinsへの返事)
これは、Chromeポリシーを設定するための現在の、文字通り公式の方法です。 https://support.google.com/chrome/a/answer)/187202?hl = ja
WindowsとLinuxのテンプレート、およびすべてのオペレーティングシステムに関する共通のポリシードキュメントは、こちらにあります。 https://dl.google.com/dl/edgedl/chrome/policy/policy_templates.Zip (Google ChromeのテンプレートとドキュメントのZipファイル)
Windows用の指示(私の追加):
ダウンロードしたADMまたはADMXテンプレートを開きます。
- 先ほどダウンロードした「policy_templates.Zip」から選択した言語で「chrome.adm」を抽出します(例:「policy_templates.Zip\windows\adm\en-US\chrome.adm」)。
- 「スタート」>「ファイル名を指定して実行」:「gpedit.msc」にナビゲートします。
- ローカルコンピュータポリシー>コンピュータ/ユーザー設定>管理用テンプレートに移動します。
- [管理用テンプレート]を右クリックし、[テンプレートの追加と削除]を選択します。
- ダイアログで "chrome.adm"テンプレートを追加してください。
- 完了すると、クラシック管理用テンプレート(ADM)/ Google/Google Chromeフォルダが[管理用テンプレート]の下に表示されます。
- [コンピュータの設定]または[ユーザーの設定]のどちらにテンプレートを追加しても、設定は両方の場所に表示されるため、Chromeをコンピュータまたはユーザーレベルで設定できます。
これが終わったら、 Antony Hatchkinsの答え のステップ5から続けてください。拡張機能IDを追加したら、chrome://policy
を開いて( ExtensionInstallWhitelist を検索して)ポリシーがChromeで機能していることを確認できます。
私は同じ問題に苦しんでいました、そして、私は以下を試みました:
- 解凍した拡張機能をパックする
- 開発者モードをオフにする
- 圧縮拡張子から.crxファイルをドラッグアンドドロップします。
- Chromeを閉じてから、もう一度開きます。
注意すべき点がいくつかあります。
- .pemファイルは.crxと一緒に保存する必要があります。
- 解凍した拡張子のフォルダに.crxと.pemを入れないでください。
Chromeを再起動したとき、新しい圧縮された拡張子についてのポップアップが表示されたので、Chromeを再起動して再起動するかどうかを確認しましたが、表示されませんでした。
私はこの解決策がうまくいったと思います!
拡張機能を無効にする設定は私にとってはうまくいきませんでした。代わりに、 Robot クラスを使用して[キャンセル]ボタンをクリックしました。
import Java.awt.Robot;
import Java.awt.event.InputEvent;
public class kiosk {
public static void main(String[] args) {
// As long as you don't move the Chrome window, the Cancel button should appear here.
int x = 410;
int y = 187;
try {
Thread.sleep(7000);// can also use robot.setAutoDelay(500);
Robot robot = new Robot();
robot.mouseMove(x, y);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(3000);// can also use robot.setAutoDelay(500);
} catch (AWTException e) {
System.err.println("Error clicking Cancel.");
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
1)ポップアップバルーンが表示されるのを待ちます。
2)新しいタブを開きます。
3)新しいタブを閉じます。ポップアップは元のタブから消えます。
小さなChrome拡張機能でこれらの手順を自動化できます。
manifest.json
{
"name": "Open and close tab",
"description": "After Chrome starts, open and close a new tab.",
"version": "1.0",
"manifest_version": 2,
"permissions": ["tabs"],
"background": {
"scripts": ["background.js"],
"persistent": false
}
}
background.js
// This runs when Chrome starts up
chrome.runtime.onStartup.addListener(function() {
// Execute the inner function after a few seconds
setTimeout(function() {
// Open new tab
chrome.tabs.create({url: "about:blank"});
// Get tab ID of newly opened tab, then close the tab
chrome.tabs.query({'currentWindow': true}, function(tabs) {
var newTabId = tabs[1].id;
chrome.tabs.remove(newTabId);
});
}, 5000);
});
この拡張機能をインストールした後、Chromeを起動してポップアップが表示される前にすぐにアプリを切り替えてください。
WebdriverIO を使っている人は、このようにクライアントを作成することで拡張機能を無効にすることができます。
var driver = require('webdriverio');
var client = driver.remote({
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
args: [
'disable-extensions'
]
}
}
});
私はWindowsで作業していますそして私は答えとしてここに提供される多くのことを試みました、しかし、ポップアップは継続的に拡張を無効にしていました、そして私は以下のステップを試みました
- chrome:// extensions ページに移動して
Pack extension
ボタンをクリックし、下の画像に表示されている赤い長方形の参照ボタンをクリックして、ルートの拡張ディレクトリを選択します。
- ルートディレクトリを選択した後下の画像の赤い丸で表示された
Pack extension
ボタンをクリックしてください。
選択した拡張子の
parent directory
のroot directory
をチェックすると、2つのファイルで[extension name].crx
と[extension name].pem
が作成されています。[extension name].crx
ファイルをchrome:// extensionsページにドラッグアンドドロップするだけで、アプリの追加ダイアログボックスを使用してAdd app
をクリックして今インストールされているページを更新します。
注意:上記のようなことをする前に、拡張機能のために開発者モードを有効にすることを確認してください。有効になっていない場合は、有効にした後でchrome:// extensionsページを更新してください。
これがまだ人々のための問題であるかどうかはわかりません。しかし、私はこの記事と他のいくつかの記事を読み、ついにこれを試してみて、このコードを使用してC#で機能させることができました。私はそれをすべてこの記事から導き出し、この記事にリンクされている可能性のあるいくつかの記事を作成しました。
私はこれが助けになることを願っています、それは確かにC#コンソールアプリケーションの私の問題を解決しました。
Chrome Selenium 2.9サーバードライバーのバージョン52.0.2743.116 mを使用する
var chromeService = ChromeDriverService.CreateDefaultService(@"C:\Selenium\InstalledServerDrivers\");
var options = new ChromeOptions();
options.AddArgument("--disable-extensions");
IWebDriver driver = new ChromeDriver(chromeService, options);
driver.Url = "http://www.google.com/";