8. よくある質問¶
別のFAQ: https://github.com/SeleniumHQ/selenium/wiki/Frequently-Asked-Questions
8.1. ChromeDriverの使い方は?¶
ダウンロードページから最新の chromedriver をダウンロードしてファイルを解凍してください:
unzip chromedriver_linux32_x.x.x.x.zip
実行可能な chromedriver
を確認してください。これでChrome WebDriverのインスタンスを作成できます。:
driver = webdriver.Chrome(executable_path="/path/to/chromedriver")
残りの例は、他のドキュメントに記載されているとおりに動作するはずです。
8.2. Selenium2はXPath2.0をサポートしていますか?¶
Ref: http://seleniumhq.org/docs/03_webdriver.html#how-xpath-works-in-webdriver
SeleniumはブラウザのXPathエンジンにXPathクエリを委任しているため、SeleniumのサポートXPathはブラウザがサポートしているものをサポートしています。ネイティブXPathエンジン(IE 6,7,8)を持たないブラウザーでは、SeleniumはXPath 1.0のみをサポートしています。
8.3. ページの一番下にスクロールする方法は?¶
Ref: http://blog.varunin.com/2011/08/scrolling-on-pages-using-selenium.html
execute_script メソッドを使用すると、ロードしたページ上でjavascriptを実行できます。なので、JavaScript APIを呼び出して、ページの下部または他の位置にスクロールすることができます。
ここではページの一番下にスクロールする例を示します。:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
DOMの window オブジェクトには、開いたウィンドウの任意の位置にスクロールする scrollTo メソッドがあります。scrollHeight は、すべての要素の共通プロパティです。document.body.scrollHeight は、ページの本文全体の高さを返します。
8.4. カスタムFirefoxプロファイルを使用してファイルを自動保存する方法は?¶
Ref: http://stackoverflow.com/questions/1176348/access-to-file-download-dialog-in-firefox
Ref: http://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/
最初のステップは、自動保存するファイルの種類を特定することです。
自動的にダウンロードするコンテンツタイプを特定するには、 curl を使用します>。:
curl -I URL | grep "Content-Type"
コンテンツタイプを見つける別の方法は、 request モジュールを使用することでも可能です。:
import requests
content_type = requests.head('http://www.python.org').headers['content-type']
print(content_type)
コンテンツタイプが特定されたら、それを使ってfirefoxプロファイル設定を設定することができます。: browser.helperApps.neverAsk.saveToDisk
次に例を示します:
import os
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://pypi.python.org/pypi/selenium")
browser.find_element_by_partial_link_text("selenium-2").click()
上記の例では、 application / octet-stream
がコンテンツタイプとして使用されています。
browser.download.dir
オプションは、ファイルをダウンロードするディレクトリを指定します。
8.5. ファイルをファイル入力にアップロードする方法は?¶
<input type = "file">
要素を選択し、ファイルパス、テストスクリプトの相対パス、絶対パスのいずれか>を渡して send_keys()
メソッドを呼び出します。WindowsとUnixシステム間のパス名の違いに注意してください。
8.6. FirebugをFirefoxで使うには?¶
最初にFirebug XPIファイルをダウンロードし、firefoxプロファイル用の``add_extension`` メソッドを呼び出します。:
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.add_extension(extension='firebug-1.8.4.xpi')
fp.set_preference("extensions.firebug.currentVersion", "1.8.4") #Avoid startup screen
browser = webdriver.Firefox(firefox_profile=fp)
8.7. 現在のウィンドウのスクリーンショットを取る方法は?¶
webdriverが提供する save_screenshot メソッドを使用します。:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.python.org/')
driver.save_screenshot('screenshot.png')
driver.quit()