8. よくある質問

Another 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()