私は多くのテストを実行するセレンテストスイートを持っています。新しいテストごとに、開いている他のウィンドウの上にブラウザウィンドウを開きます。地元の環境で働いている間に非常にびっくりします。バックグラウンドでウィンドウを開くようセレンやOS(MAC)に指示する方法はありますか?Selenium Webdriverはバックグラウンドでブラウザウィンドウをサイレントモードで開くことができますか?
答えて
いくつかの方法がありますが、単純な「設定値を設定する」ではありません。あなたはすべての人の要件に適合しないヘッドレスブラウザに投資されない限り、それはハックの少しです:
How to hide Firefox window (Selenium WebDriver)?
と
Is it possible to hide the browser in Selenium RC?
することができます「たぶん」、 --no-startup-window
いくつかのブラウザ、特にIEでは、テストに重点を置かないようにテストを傷つけることに注意してください。
また、AutoITで少しでもハックして、開いたウィンドウを非表示にすることもできます。 Windows上で
" - no-startup-window "は非推奨になりました –
あなたがwin32gui使用することができます。
import win32gui
import subprocess
class HideFox:
def __init__(self, exe='firefox.exe'):
self.exe = exe
self.get_hwnd()
def get_hwnd(self):
win_name = get_win_name(self.exe)
self.hwnd = win32gui.FindWindow(0,win_name)
def hide(self):
win32gui.ShowWindow(self.hwnd, 6)
win32gui.ShowWindow(self.hwnd, 0)
def show(self):
win32gui.ShowWindow(self.hwnd, 5)
win32gui.ShowWindow(self.hwnd, 3)
def get_win_name(exe):
'''simple function that gets the window name of the process with the given name'''
info = subprocess.STARTUPINFO()
info.dwFlags |= subprocess.STARTF_USESHOWWINDOW
raw=subprocess.check_output('tasklist /v /fo csv', startupinfo=info).split('\n')[1:-1]
for proc in raw:
try:
proc=eval('['+proc+']')
if proc[0]==exe:
return proc[8]
except:
pass
raise ValueError('Could not find a process with name '+exe)
例:
hider=HideFox('firefox.exe') #can be anything, eq: phantomjs.exe, notepad.exe ...
#To hide the window
hider.hide()
#To show again
hider.show()
しかし、この解決策の一つの問題がある - send_keysメソッドを使用して、ウィンドウショーアップになります。あなたは、ウィンドウを表示しませんJavaScriptを使用して、それに対処することができます
def send_keys_without_opening_window(id_of_the_element, keys)
YourWebdriver.execute_script("document.getElementById('" +id_of_the_element+"').value = '"+keys+"';")
を* nixの上で、あなたはまた、XvfbのようにヘッドレスのXサーバを実行し、それにDISPLAY変数を指すことができます:
PythonでSelenium Webドライバを使用している場合は、XvfbとXephyrのPythonラッパーPyVirtualDisplayを使用できます。
PyVirtualDisplayはXvfbを依存関係として必要とします。 Ubuntuでは、最初のXvfbのをインストールします。
sudo apt-get install xvfb
を、その後は、PyPIからPyVirtualDisplayをインストール:Pythonで
pip install pyvirtualdisplay
サンプルセレンスクリプトをヘッドレスモードでPyVirtualDisplayで:
#!/usr/bin/env python
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()
EDIT 最初の回答は2014年に掲載されましたが、今は2018年の終わりです。他のすべてのブラウザと同様に、また進んだ。 Chromeには完全なヘッドレスバージョンが用意されているため、UIウィンドウを非表示にするためにサードパーティのライブラリを使用する必要はありません。次のようにサンプル・コードは次のとおりです。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
CHROME_PATH = '/usr/bin/google-chrome'
CHROMEDRIVER_PATH = '/usr/bin/chromedriver'
WINDOW_SIZE = "1920,1080"
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=%s" % WINDOW_SIZE)
chrome_options.binary_location = CHROME_PATH
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH,
chrome_options=chrome_options
)
driver.get("https://www.google.com")
driver.get_screenshot_as_file("capture.png")
driver.close()
美しく清潔な解決策です。ありがとうございました。魅力のように動作します。もう一度+ 1sを得なければならない – Eldamir
Mac OSXで利用できますか? – vanguard69
これはUbuntuを使用していて、テストスイートがPythonになっている場合に便利です – kevzettler
私はあなたが私の知る限りPhantomJSは、Firefoxでのみ動作します知っているようにPhantom Official Website
を訪問する必要があります詳細はファントムのJs を使用することをお勧め..
PhantomJs.exeをダウンロードした後、下の図のようにプロジェクトにインポートする必要があります。 >>天秤座RY >>phantomjs.exe
は今、あなたはあなたのセレンコードの内部に持っているすべては
import os
path2phantom = os.getcwd() + "\common\Library\phantomjs.exe"
browser = webdriver.PhantomJS(path2phantom)
のようなものへのパスをライン
browser = webdriver.Firefox()
を変更することですあなたは好きなように変更することができます:)
それは、それは私のために働いた。そして間違いなく、彼はあなたがするために動作しますが、ここで乾杯
このリンクから質問に答えることができますが、ここに答えて、参考のためのリンクを提供してください。リンクされたページが変更された場合、リンクのみの回答は無効になる可能性があります。 – slfan
が私のために働いた.NETソリューションです:
ダウンロードPhantomJsここhttp://phantomjs.org/download.html
は、ダウンロードしてペーストにbinフォルダから.exeファイルをコピーします。 Visual Studioプロジェクトのbinデバッグ/リリースフォルダに保存します。
PhantomJSDriver driver = new PhantomJSDriver();
using (driver)
{
driver.Navigate().GoToUrl("http://testing-ground.scraping.pro/login");
//your code here
}
クローム57は窓が見えなくなります--headlessフラグを渡すオプションがあります:
は次のようにドライバーを開き、あなたのコードでは
using OpenQA.Selenium.PhantomJS;
を使用して、これを追加します。
このフラグは--no-startup-windowとは異なり、最後のウィンドウは起動しません。それは、this pageさんのように、バックグラウンドアプリのホスティングに使用されます。あなたはヘッドレスモードで実行することができ、任意のブラウザなしで実行するための
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
ChromeDriver chromeDriver = new ChromeDriver(options);
:
Javaコードは、セレンwebdriverを(ChromeDriver)にフラグを渡します。
私はあなたが `やっている場合は、私はまた、Googleの公式ウェブサイトhttps://developers.google.com/web/updates/2017/04/headless-chrome
- 1. C#でSelenium WebDriverを使用してフルスクリーンでブラウザウィンドウを開く
- 2. Selenium webdriverはすでに開いているブラウザウィンドウにアタッチできますか?
- 3. 新しいブラウザウィンドウを開くことなく、Selenium 2を使ってHTMLデータを取得できますか?
- 4. JUnit(Selenium WebDriver)がChromeブラウザでwww.google.co.ukを開く
- 5. Selenium WebDriverとFirefoxの互換性マトリックスはどこで確認できますか?
- 6. C#では、ブラウザを開くことなく、バックグラウンドでURLを開くことは可能ですか?
- 7. Selenium Webdriverでiframeを見つけることができません(java)
- 8. JAVAを使用してSelenium WebDriverでChromeデベロッパーコンソールを開く方法
- 9. LoadイベントでOpenFileDialogを開くと、Windows Formsフォームがバックグラウンドで開きます
- 10. Selenium webdriverでテストオートコンプリート
- 11. Seleniumでは、ClickAndHoldはwebdriverとchromeで動作しますか?
- 12. フレックス3アプリケーションで作成された画像を表示するブラウザウィンドウを開くことはできますか?
- 13. Selenium WebdriverとSelenium Ghostdriverの違いは何ですか?
- 14. Selenium WebDriverで抽象クラスを使用できますか?
- 15. 異なるセッションで同時に2つのブラウザウィンドウを開くことはできますか?
- 16. Selenium Webdriver PhantomJS C#は常にcmdウィンドウを開きます
- 17. Selenium Webdriverでブートストラップモーダルダイアログにアクセスできない
- 18. VS 2015でリソースファイルを開くことができません:インクルードファイルを開くことができません。afxres.h
- 19. JSテスト中にCapybara + Seleniumがブラウザウィンドウを開くのを停止します
- 20. Javaのselenium webdriverを使用してページタイトルでウィンドウ間を切り替えることはできますか?
- 21. iOSアプリケーションでデバイスをサイレントモードに切り替えることはできますか?
- 22. iPhoneをサイレントモードで振動させることはできますか?
- 23. Selenium Webdriverで同じセッションを使用してブラウザを開く方法は?
- 24. Seleniumのwebdriverでユーザーエージェントを渡します
- 25. NSISインストーラがバックグラウンドで開きます。
- 26. NSISインストーラがバックグラウンドで開きます
- 27. Blackberry:Officeアタッチメントはメールではなくブラウザから開くことができます。
- 28. グローバルタイマーをバックグラウンドで実行することはできますか?
- 29. AtomエディタでPythonシェルを開くことはできますか?
- 30. Xcodeで.xcarchiveを再度開くことはできますか?
にあなたにこの程度の情報の少しを追加あなたは今私のために働いているPythonで1例
を表示ドライバ= webdriver。あなたのコードでFirefox() 'を実行してください。私の答えはここにあります:http://stackoverflow.com/a/23898148/1515819 –