7. WebDriver API

注釈

これは公式なドキュメントではありません。公式のAPIドキュメントは こちら から入手できます。

この章では、Selenium WebDriverのすべてのインターフェイスについて説明します。

推奨するインポートスタイル

この章のAPI定義には、クラスの絶対位置が示されています。ただし、推奨されるインポートスタイルは次のとおりです。:

from selenium import webdriver

次に、このようなクラスにアクセスできます。:

webdriver.Firefox
webdriver.FirefoxProfile
webdriver.Chrome
webdriver.ChromeOptions
webdriver.Ie
webdriver.Opera
webdriver.PhantomJS
webdriver.Remote
webdriver.DesiredCapabilities
webdriver.ActionChains
webdriver.TouchActions
webdriver.Proxy

特別なキークラス( Keys )は次のようにインポートできます。:

from selenium.webdriver.common.keys import Keys

例外クラスは次のようにインポートできます( TheNameOfTheExceptionClass を実際のクラス名で置き換えてください):

from selenium.common.exceptions import [TheNameOfTheExceptionClass]

APIで使用される表記規則

いくつかの属性は呼び出し可能(またはメソッド)であり、他の属性は呼び出し不能(プロパティ)です。すべての呼び出し可能属性は丸括弧で終わります。

プロパティの例を次に示します。:

  • current_url

    現在読み込まれているページのURLです。

    Usage:

    driver.current_url
    

メソッドの例を次に示します:

  • close()

    現在のウィンドウを閉じます。

    Usage:

    driver.close()
    

7.1. 例外

すべてのwebdriverコードで発生する可能性のある例外。

exception selenium.common.exceptions.ElementNotSelectableException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.InvalidElementStateException

選択できない要素を選択しようとするとスローされます。

たとえば、 ‘script’要素を選択するとき発生します。

exception selenium.common.exceptions.ElementNotVisibleException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.InvalidElementStateException

要素がDOM上に存在するが、要素が表示されないため対話できないときにスローされます。

表示されていない要素のテキストをクリックまたは読み取ろうとするときに最もよく発生します。

exception selenium.common.exceptions.ErrorInResponseException(response, msg)

ベースクラス: selenium.common.exceptions.WebDriverException

サーバー側でエラーが発生した場合にスローされます。

これはfirefox拡張機能またはリモートドライバサーバと通信するときに発生する可能性があります。

exception selenium.common.exceptions.ImeActivationFailedException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

IMEエンジンのアクティブ化が失敗したときにスローされます。

exception selenium.common.exceptions.ImeNotAvailableException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

IMEサポートが利用できない場合にスローされます。この例外はIMEサポートがマシン上で利用できない場合、すべてのIME関連メソッド呼び出しでスローされます。

exception selenium.common.exceptions.InvalidCookieDomainException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

現在のURLとは異なるドメインにCookieを追加しようとするとスローされます。

exception selenium.common.exceptions.InvalidElementStateException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

exception selenium.common.exceptions.InvalidSelectorException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.NoSuchElementException

要素を見つけるために使用されるセレクタがWebElementを返さないときにスローされます。現在のところセレクタがxpath式であり構文的に無効(xpath式ではない)か、式でWebElements(“count(//input)”など)を選択していない場合にのみ発生します。

exception selenium.common.exceptions.InvalidSwitchToTargetException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

切り替えられるフレームまたはウィンドウのターゲットが存在しない場合にスローされます。

exception selenium.common.exceptions.MoveTargetOutOfBoundsException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

ActionsChains move() メソッドに提供されたターゲットが無効な場合、つまりドキュメントの外にある場合にスローされます。

exception selenium.common.exceptions.NoAlertPresentException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

提示されていないアラートに切り替えるとスローされます。

これはアラートがまだ画面に表示されていないときに、Alert()クラスの操作を呼び出すことによって発生する可能性があります。

exception selenium.common.exceptions.NoSuchAttributeException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

要素の属性が見つからなかった場合にスローされます。

テストしている特定のブラウザに属性が存在するかどうかを確認することができます。一部のブラウザでは、同じプロパティのプロパティ名が異なる場合があります。(IE8の.innerTextとFirefoxの.textContent)

exception selenium.common.exceptions.NoSuchElementException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

要素が見つからなかった場合にスローされます。

この例外が発生した場合は、次の点を確認してください。
  • find_byで使用されているセレクターをチェック...

  • 検索操作時に要素がまだ画面に表示されていない可能性があります(Webページがまだ読み込まれています)。要素が表示されるまで待機する待機ラッパーの記述方法については、selenium.webdriver.support.wait.WebDriverWait()を参照してください。

exception selenium.common.exceptions.NoSuchFrameException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.InvalidSwitchToTargetException

切り替えられるフレームターゲットが存在しない場合にスローされます。

exception selenium.common.exceptions.NoSuchWindowException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.InvalidSwitchToTargetException

切り替えられるウィンドウのターゲットが存在しない場合にスローされます。

アクティブなウィンドウハンドルを見つけるには、次の方法でアクティブなウィンドウハンドルのリストを取得します。

print driver.window_handles
exception selenium.common.exceptions.RemoteDriverServerException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

exception selenium.common.exceptions.StaleElementReferenceException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

要素への参照が”失効した”ときにスローされます。

失効とは、要素がページのDOMに表示されなくなったことを意味します。

StaleElementReferenceExceptionの原因としては次のものがありますが、これに限定されません。
  • 同じページにいないか、要素が更新されている可能性があります

  • The element may have been removed and re-added to the screen, since it was located. Such as an element being relocated. This can happen typically with a javascript framework when values are updated and the node is rebuilt.
  • Element may have been inside an iframe or another context which was refreshed.
exception selenium.common.exceptions.TimeoutException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

コマンドが十分な時間内に完了しなかった場合にスローされます。

exception selenium.common.exceptions.UnableToSetCookieException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

ドライバがクッキーを設定しなかった場合にスローされます。

exception selenium.common.exceptions.UnexpectedAlertPresentException(msg=None, screen=None, stacktrace=None, alert_text=None)

ベースクラス: selenium.common.exceptions.WebDriverException

予期しない警告が表示されたときにスローされます。

通常、予想されるモーダルがWebdriverフォームをブロックして、多くのコマンドが実行しているときに発生します。

exception selenium.common.exceptions.UnexpectedTagNameException(msg=None, screen=None, stacktrace=None)

ベースクラス: selenium.common.exceptions.WebDriverException

サポートクラスが期待されるWeb要素を取得しなかった場合にスローされます。

exception selenium.common.exceptions.WebDriverException(msg=None, screen=None, stacktrace=None)

ベースクラス: Exception

Base webdriverの例外

7.2. Action Chains

ActionChainsの実装

class selenium.webdriver.common.action_chains.ActionChains(driver)

ベースクラス: object

ActionChains、マウスの動き、マウスボタンの操作、キーの押下、コンテキストメニューの操作など、低レベルのやりとりを自動化する方法です。これは、ホバーオーバーやドラッグアンドドロップなどのより複雑なアクションを実行する場合に便利です。

ユーザーアクションを生成

ActionChainsオブジェクトのアクションのメソッドを呼び出すと、アクションはActionChainsオブジェクトのキューに格納されます。perform()を呼び出すと、イベントはキューに入れられた順に発生します。

ActionChainsはチェーンパターンで使用できます。

menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")

ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()

あるいは、アクションを1つずつキューに入れて実行することもできます。

menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")

actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()

どちらの方法でも、アクションは順番に呼び出され、順番に実行されます。

click(on_element=None)

要素をクリックします。

Args:
  • on_element:クリックする要素。 Noneの場合、現在のマウス位置をクリックします。

click_and_hold(on_element=None)

要素上でマウスの左ボタンを押したままにします。

Args:
  • on_element:マウスを押下する要素。 Noneの場合、現在のマウス位置をクリックします。

context_click(on_element=None)

要素をコンテキストクリック(右クリック)します。

Args:
  • on_element:コンテキストをクリックする要素。 Noneの場合、現在のマウス位置をクリックします。

double_click(on_element=None)

要素をダブルクリックします。

Args:
  • on_element:ダブルクリックする要素。 Noneの場合、現在のマウス位置をクリックします。

drag_and_drop(source, target)
ソース上の要素をマウスの左ボタンで押したままにします。

ターゲット要素に移動してマウスボタンを離します。

Args:
  • source:マウスキーを押下する要素

  • target:マウスキーを離す要素

drag_and_drop_by_offset(source, xoffset, yoffset)
ソース上の要素をマウスの左ボタンで押したままにします。

ターゲットオフセットに移動し、マウスボタンを離します。

Args:
  • source:マウスキーを押下する要素

  • xoffset:移動するためのXオフセット

  • yoffset:移動するためのYオフセット

key_down(value, element=None)
キーを離すことなく、キーを押すだけで送信します。

修飾キー(Controlキー、Altキー、Shiftキー)でのみ使用して下さい。

Args:
  • value:送信する修飾キー。値はKeysクラスで定義されます。

  • element:キーを送信する要素。Noneの場合、現在フォーカスされている要素にキーを送信します。

例、ctrl+cを押す:

ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
key_up(value, element=None)

修飾キーを解放します。

Args:
  • value:送信する修飾キー。値はKeysクラスで定義されます。

  • element:キーを送信する要素。Noneの場合、現在フォーカスされている要素にキーを送信します。

例、ctrl+cを押す:

ActionChains(driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
move_by_offset(xoffset, yoffset)

マウスを現在の位置からのオフセットに移動します。

Args:
  • xoffset:正または負の整数として移動するXオフセット。

  • yoffset:正または負の整数として移動するYオフセット。

move_to_element(to_element)

マウスを要素の中央に移動する。

Args:
  • to_element:移動先のWebElementです。

move_to_element_with_offset(to_element, xoffset, yoffset)
指定された要素のオフセットだけマウスを移動します。

オフセットは要素の左上隅を基準にしています。

Args:
  • to_element:移動先のWebElementです。

  • xoffset:移動するためのXオフセット

  • yoffset:移動するためのYオフセット

perform()

すべてのストアド・アクションを実行します。

release(on_element=None)

保持されているマウスボタンを要素に解放します。

Args:
  • on_element:マウスを押し上げる要素。Noneの場合、現在のマウス位置を解放します。

send_keys(*keys_to_send)

現在フォーカスされている要素にキーを送信します。

Args:
  • keys_to_send: The keys to send. Modifier keys constants can be found in the ‘Keys’ class.
send_keys_to_element(element, *keys_to_send)

要素にキーを送信します。

Args:
  • element:キーを送信する要素。

  • keys_to_send: The keys to send. Modifier keys constants can be found in the ‘Keys’ class.

7.3. アラート

アラートの実装。

class selenium.webdriver.common.alert.Alert(driver)

ベースクラス: object

アラートを扱うことができます。

このクラスを使用して、アラートのプロンプトと対話します。アラートのプロンプトから却下、受け入れ、入力、テキスト取得するためのメソッドが含まれています。

アラートプロンプトの受け入れ/却下:

Alert(driver).accept()
Alert(driver).dismiss()

アラートプロンプトへの値の入力:

name_prompt = Alert(driver) name_prompt.send_keys(“Willian Shakesphere”) name_prompt.accept()

確認のためにプロンプトのテキストを読む:

alert_text = Alert(driver).text self.assertEqual(“Do you wish to quit?”, alert_text)
accept()

利用可能なアラートを受け入れます。

Usage:: Alert(driver).accept() # Confirm a alert dialog.

authenticate(username, password)

認証ダイアログにユーザー名とパスワードを送信します(Basic HTTP Authのように)。暗黙的にOKをクリックします。

Usage:: driver.switch_to.alert.authenticate(‘cheese’, ‘secretGouda’)

Args:-username: string to be set in the username section of the dialog -password: string to be set in the password section of the dialog
dismiss()

利用可能なアラートを閉じます。

send_keys(keysToSend)

アラートにキーを送信します。

Args:
  • keysToSend:Alertに送信されるテキスト。

text

Alertのテキストを取得します。

7.4. 特殊キー

Key実装

class selenium.webdriver.common.keys.Keys

ベースクラス: object

特別なキーコードのセット。

ADD = '\ue025'
ALT = '\ue00a'
ARROW_DOWN = '\ue015'
ARROW_LEFT = '\ue012'
ARROW_RIGHT = '\ue014'
ARROW_UP = '\ue013'
BACKSPACE = '\ue003'
BACK_SPACE = '\ue003'
CANCEL = '\ue001'
CLEAR = '\ue005'
COMMAND = '\ue03d'
CONTROL = '\ue009'
DECIMAL = '\ue028'
DELETE = '\ue017'
DIVIDE = '\ue029'
DOWN = '\ue015'
END = '\ue010'
ENTER = '\ue007'
EQUALS = '\ue019'
ESCAPE = '\ue00c'
F1 = '\ue031'
F10 = '\ue03a'
F11 = '\ue03b'
F12 = '\ue03c'
F2 = '\ue032'
F3 = '\ue033'
F4 = '\ue034'
F5 = '\ue035'
F6 = '\ue036'
F7 = '\ue037'
F8 = '\ue038'
F9 = '\ue039'
HELP = '\ue002'
HOME = '\ue011'
INSERT = '\ue016'
LEFT = '\ue012'
LEFT_ALT = '\ue00a'
LEFT_CONTROL = '\ue009'
LEFT_SHIFT = '\ue008'
META = '\ue03d'
MULTIPLY = '\ue024'
NULL = '\ue000'
NUMPAD0 = '\ue01a'
NUMPAD1 = '\ue01b'
NUMPAD2 = '\ue01c'
NUMPAD3 = '\ue01d'
NUMPAD4 = '\ue01e'
NUMPAD5 = '\ue01f'
NUMPAD6 = '\ue020'
NUMPAD7 = '\ue021'
NUMPAD8 = '\ue022'
NUMPAD9 = '\ue023'
PAGE_DOWN = '\ue00f'
PAGE_UP = '\ue00e'
PAUSE = '\ue00b'
RETURN = '\ue006'
RIGHT = '\ue014'
SEMICOLON = '\ue018'
SEPARATOR = '\ue026'
SHIFT = '\ue008'
SPACE = '\ue00d'
SUBTRACT = '\ue027'
TAB = '\ue004'
UP = '\ue013'

7.5. 要素を検索

これらは、要素の位置を特定するために使用できる属性です。使用例については、 要素の配置 の章を参照してください。

By実装

class selenium.webdriver.common.by.By

ベースクラス: object

サポートされているロケーター戦略のセット。

CLASS_NAME = 'class name'
CSS_SELECTOR = 'css selector'
ID = 'id'
NAME = 'name'
TAG_NAME = 'tag name'
XPATH = 'xpath'

7.6. Desired Capabilities

Desired Capabilitiesの使用例については、リモートWebDriverでSeleniumを使用する を参照してください。

Desired Capabilities実装

class selenium.webdriver.common.desired_capabilities.DesiredCapabilities

ベースクラス: object

デフォルトでサポートされている必要な機能のセット。

SeleniumサーバーまたはSeleniumグリッドに接続するためのリモートwebdriverを要求するためのDesired Capabilitiesオブジェクトを作成するための出発点として使用します。

Usage Example:

from selenium import webdriver

selenium_grid_url = "http://198.0.0.1:4444/wd/hub"

# Create a desired capabilities object as a starting point.
capabilities = DesiredCapabilities.FIREFOX.copy()
capabilities['platform'] = "WINDOWS"
capabilities['version'] = "10"

# Instantiate an instance of Remote WebDriver with the desired capabilities.
driver = webdriver.Remote(desired_capabilities=capabilities,
                          command_executor=selenium_grid_url)

Note: Always use ‘.copy()’ on the DesiredCapabilities object to avoid the side effects of altering the Global class instance.

ANDROID = {'browserName': 'android', 'version': '', 'javascriptEnabled': True, 'platform': 'ANDROID'}
CHROME = {'browserName': 'chrome', 'version': '', 'javascriptEnabled': True, 'platform': 'ANY'}
EDGE = {'browserName': 'MicrosoftEdge', 'version': '', 'platform': 'WINDOWS'}
FIREFOX = {'browserName': 'firefox', 'version': '', 'javascriptEnabled': True, 'platform': 'ANY', 'marionette': True}
HTMLUNIT = {'browserName': 'htmlunit', 'version': '', 'platform': 'ANY'}
HTMLUNITWITHJS = {'browserName': 'htmlunit', 'version': 'firefox', 'javascriptEnabled': True, 'platform': 'ANY'}
INTERNETEXPLORER = {'browserName': 'internet explorer', 'version': '', 'javascriptEnabled': True, 'platform': 'WINDOWS'}
IPAD = {'browserName': 'iPad', 'version': '', 'javascriptEnabled': True, 'platform': 'MAC'}
IPHONE = {'browserName': 'iPhone', 'version': '', 'javascriptEnabled': True, 'platform': 'MAC'}
OPERA = {'browserName': 'opera', 'version': '', 'javascriptEnabled': True, 'platform': 'ANY'}
PHANTOMJS = {'browserName': 'phantomjs', 'version': '', 'javascriptEnabled': True, 'platform': 'ANY'}
SAFARI = {'browserName': 'safari', 'version': '', 'javascriptEnabled': True, 'platform': 'MAC'}

7.7. ユーティリティ

ユーティリティメソッド

selenium.webdriver.common.utils.find_connectable_ip(host, port=None)

ホスト名をIPに解決します。IPv4アドレスを優先します。

以前のIPv4のみの実装からの動作やFirefoxDriverなどの一部のドライバがIPv6接続をサポートしていないため、IPv4を推奨しています。

オプションのポート番号が指定されている場合、指定されたポートでlistenするIPだけが考慮されます。

Args:
  • host - ホスト名

  • port - オプションのポート番号

Returns:

文字列としての単一のIPアドレス。IPv4アドレスが見つかった場合は、そのアドレスが返されます。それ以外の場合は、IPv6アドレスが見つかった場合は1が返されます。どちらも指定されていない場合、Noneが返されます。

selenium.webdriver.common.utils.free_port()

ソケットを使用して空きポートを決定します。

selenium.webdriver.common.utils.is_connectable(port, host='localhost')

ポートでサーバーに接続して、実行中かどうかを調べます。

Args:
  • port - The port to connect.
selenium.webdriver.common.utils.is_url_connectable(port)

/ status pathと指定されたポートのHTTPサーバーに接続して正常に応答するかどうかを調べます。

Args:
  • port - The port to connect.
selenium.webdriver.common.utils.join_host_port(host, port)

ホスト名とポートを結合します。

これは、IPv6リテラルに対処するための最小限の実装です。たとえば、_join_host_port( ‘:: 1’、80)== ‘[:: 1]:80’となります。

Args:
  • host - ホスト名

  • port - 整数ポート

selenium.webdriver.common.utils.keys_to_typing(value)

要素に入力される値を処理します。

7.8. Firefox WebDriver

class selenium.webdriver.firefox.webdriver.WebDriver(firefox_profile=None, firefox_binary=None, timeout=30, capabilities=None, proxy=None, executable_path='geckodriver', firefox_options=None, log_path='geckodriver.log')

ベースクラス: selenium.webdriver.remote.webdriver.WebDriver

context(context)

Sets the context that Selenium commands are running in using a with statement. The state of the context on the server is saved before entering the block, and restored upon exiting it.

パラメータ:context – Context, may be one of the class properties CONTEXT_CHROME or CONTEXT_CONTENT.

Usage example:

with selenium.context(selenium.CONTEXT_CHROME):
    # chrome scope
    ... do stuff ...
quit()

ドライバを終了し、関連するすべてのウィンドウを閉じます。

set_context(context)
NATIVE_EVENTS_ALLOWED = True
firefox_profile

7.9. Chrome WebDriver

class selenium.webdriver.chrome.webdriver.WebDriver(executable_path='chromedriver', port=0, chrome_options=None, service_args=None, desired_capabilities=None, service_log_path=None)

ベースクラス: selenium.webdriver.remote.webdriver.WebDriver

Controls the ChromeDriver and allows you to drive the browser.

You will need to download the ChromeDriver executable from http://chromedriver.storage.googleapis.com/index.html

create_options()
launch_app(id)

Launches Chrome app specified by id.

quit()

Closes the browser and shuts down the ChromeDriver executable that is started when starting the ChromeDriver

7.10. リモートWebDriver

The WebDriver implementation.

class selenium.webdriver.remote.webdriver.WebDriver(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=None, browser_profile=None, proxy=None, keep_alive=False, file_detector=None)

ベースクラス: object

Controls a browser by sending commands to a remote server. This server is expected to be running the WebDriver wire protocol as defined at https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol

Attributes:
  • session_id - String ID of the browser session started and controlled by this WebDriver.
  • capabilities - Dictionaty of effective capabilities of this browser session as returned
    by the remote server. See https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities
  • command_executor - remote_connection.RemoteConnection object used to execute commands.
  • error_handler - errorhandler.ErrorHandler object used to handle errors.

Adds a cookie to your current session.

Args:
  • cookie_dict: A dictionary object, with required keys - “name” and “value”;
    optional keys - “path”, “domain”, “secure”, “expiry”
Usage:
driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’}) driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’, ‘path’ : ‘/’}) driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’, ‘path’ : ‘/’, ‘secure’:True})
back()

Goes one step backward in the browser history.

Usage:driver.back()
close()

現在のウィンドウを閉じます。

Usage:driver.close()
create_web_element(element_id)

Creates a web element with the specified element_id.

delete_all_cookies()

Delete all cookies in the scope of the session.

Usage:driver.delete_all_cookies()

Deletes a single cookie with the given name.

Usage:driver.delete_cookie(‘my_cookie’)
execute(driver_command, params=None)

Sends a command to be executed by a command.CommandExecutor.

Args:
  • driver_command: The name of the command to execute as a string.
  • params: A dictionary of named parameters to send with the command.
Returns:

The command’s JSON response loaded into a dictionary object.

execute_async_script(script, *args)

Asynchronously Executes JavaScript in the current window/frame.

Args:
  • script: The JavaScript to execute.
  • *args: Any applicable arguments for your JavaScript.
Usage:

driver.execute_async_script(‘document.title’)

execute_script(script, *args)

Synchronously Executes JavaScript in the current window/frame.

Args:
  • script: The JavaScript to execute.
  • *args: Any applicable arguments for your JavaScript.
Usage:

driver.execute_script(‘document.title’)

file_detector_context(file_detector_class, *args, **kwargs)

Overrides the current file detector (if necessary) in limited context. Ensures the original file detector is set afterwards.

with webdriver.file_detector_context(UselessFileDetector):
someinput.send_keys(‘/etc/hosts’)
Args:
  • file_detector_class - Class of the desired file detector. If the class is different
    from the current file_detector, then the class is instantiated with args and kwargs and used as a file detector during the duration of the context manager.
  • args - Optional arguments that get passed to the file detector class during
    instantiation.
  • kwargs - Keyword arguments, passed the same way as args.
find_element(by='id', value=None)

‘Private’ method used by the find_element_by_* methods.

Usage:Use the corresponding find_element_by_* instead of this.
戻り値の型:WebElement
find_element_by_class_name(name)

Finds an element by class name.

Args:
  • name: The class name of the element to find.
Usage:

driver.find_element_by_class_name(‘foo’)

find_element_by_css_selector(css_selector)

Finds an element by css selector.

Args:
  • css_selector: The css selector to use when finding elements.
Usage:

driver.find_element_by_css_selector(‘#foo’)

find_element_by_id(id_)

Finds an element by id.

Args:
  • id_ - The id of the element to be found.
Usage:

driver.find_element_by_id(‘foo’)

Finds an element by link text.

Args:
  • link_text: The text of the element to be found.
Usage:

driver.find_element_by_link_text(‘Sign In’)

find_element_by_name(name)

Finds an element by name.

Args:
  • name: The name of the element to find.
Usage:

driver.find_element_by_name(‘foo’)

Finds an element by a partial match of its link text.

Args:
  • link_text: The text of the element to partially match on.
Usage:

driver.find_element_by_partial_link_text(‘Sign’)

find_element_by_tag_name(name)

Finds an element by tag name.

Args:
  • name: The tag name of the element to find.
Usage:

driver.find_element_by_tag_name(‘foo’)

find_element_by_xpath(xpath)

Finds an element by xpath.

Args:
  • xpath - The xpath locator of the element to find.
Usage:

driver.find_element_by_xpath(‘//div/td[1]’)

find_elements(by='id', value=None)

‘Private’ method used by the find_elements_by_* methods.

Usage:Use the corresponding find_elements_by_* instead of this.
戻り値の型:list of WebElement
find_elements_by_class_name(name)

Finds elements by class name.

Args:
  • name: The class name of the elements to find.
Usage:

driver.find_elements_by_class_name(‘foo’)

find_elements_by_css_selector(css_selector)

Finds elements by css selector.

Args:
  • css_selector: The css selector to use when finding elements.
Usage:

driver.find_elements_by_css_selector(‘.foo’)

find_elements_by_id(id_)

Finds multiple elements by id.

Args:
  • id_ - The id of the elements to be found.
Usage:

driver.find_elements_by_id(‘foo’)

Finds elements by link text.

Args:
  • link_text: The text of the elements to be found.
Usage:

driver.find_elements_by_link_text(‘Sign In’)

find_elements_by_name(name)

Finds elements by name.

Args:
  • name: The name of the elements to find.
Usage:

driver.find_elements_by_name(‘foo’)

Finds elements by a partial match of their link text.

Args:
  • link_text: The text of the element to partial match on.
Usage:

driver.find_element_by_partial_link_text(‘Sign’)

find_elements_by_tag_name(name)

Finds elements by tag name.

Args:
  • name: The tag name the use when finding elements.
Usage:

driver.find_elements_by_tag_name(‘foo’)

find_elements_by_xpath(xpath)

Finds multiple elements by xpath.

Args:
  • xpath - The xpath locator of the elements to be found.
Usage:

driver.find_elements_by_xpath(“//div[contains(@class, ‘foo’)]”)

forward()

Goes one step forward in the browser history.

Usage:driver.forward()
get(url)

Loads a web page in the current browser session.

Get a single cookie by name. Returns the cookie if found, None if not.

Usage:driver.get_cookie(‘my_cookie’)
get_cookies()

Returns a set of dictionaries, corresponding to cookies visible in the current session.

Usage:driver.get_cookies()
get_log(log_type)

Gets the log for a given log type

Args:
  • log_type: type of log that which will be returned
Usage:

driver.get_log(‘browser’) driver.get_log(‘driver’) driver.get_log(‘client’) driver.get_log(‘server’)

get_screenshot_as_base64()
Gets the screenshot of the current window as a base64 encoded string
which is useful in embedded images in HTML.
Usage:driver.get_screenshot_as_base64()
get_screenshot_as_file(filename)
Gets the screenshot of the current window. Returns False if there is
any IOError, else returns True. Use full paths in your filename.
Args:
  • filename: The full path you wish to save your screenshot to.
Usage:

driver.get_screenshot_as_file(‘/Screenshots/foo.png’)

get_screenshot_as_png()

Gets the screenshot of the current window as a binary data.

Usage:driver.get_screenshot_as_png()
get_window_position(windowHandle='current')

Gets the x,y position of the current window.

Usage:driver.get_window_position()
get_window_size(windowHandle='current')

Gets the width and height of the current window.

Usage:driver.get_window_size()
implicitly_wait(time_to_wait)
Sets a sticky timeout to implicitly wait for an element to be found,
or a command to complete. This method only needs to be called one time per session. To set the timeout for calls to execute_async_script, see set_script_timeout.
Args:
  • time_to_wait: Amount of time to wait (in seconds)
Usage:

driver.implicitly_wait(30)

maximize_window()

Maximizes the current window that webdriver is using

quit()

Quits the driver and closes every associated window.

Usage:driver.quit()
refresh()

Refreshes the current page.

Usage:driver.refresh()
save_screenshot(filename)
Gets the screenshot of the current window. Returns False if there is
any IOError, else returns True. Use full paths in your filename.
Args:
  • filename: The full path you wish to save your screenshot to.
Usage:

driver.get_screenshot_as_file(‘/Screenshots/foo.png’)

set_page_load_timeout(time_to_wait)
Set the amount of time to wait for a page load to complete
before throwing an error.
Args:
  • time_to_wait: The amount of time to wait
Usage:

driver.set_page_load_timeout(30)

set_script_timeout(time_to_wait)
Set the amount of time that the script should wait during an
execute_async_script call before throwing an error.
Args:
  • time_to_wait: The amount of time to wait (in seconds)
Usage:

driver.set_script_timeout(30)

set_window_position(x, y, windowHandle='current')

Sets the x,y position of the current window. (window.moveTo)

Args:
  • x: the x-coordinate in pixels to set the window position
  • y: the y-coordinate in pixels to set the window position
Usage:

driver.set_window_position(0,0)

set_window_size(width, height, windowHandle='current')

Sets the width and height of the current window. (window.resizeTo)

Args:
  • width: the width in pixels to set the window to
  • height: the height in pixels to set the window to
Usage:

driver.set_window_size(800,600)

start_client()

Called before starting a new session. This method may be overridden to define custom startup behavior.

start_session(desired_capabilities, browser_profile=None)

Creates a new session with the desired capabilities.

Args:
  • browser_name - The name of the browser to request.
  • version - Which browser version to request.
  • platform - Which platform to request the browser on.
  • javascript_enabled - Whether the new session should support JavaScript.
  • browser_profile - A selenium.webdriver.firefox.firefox_profile.FirefoxProfile object. Only used if Firefox is requested.
stop_client()

Called after executing a quit command. This method may be overridden to define custom shutdown behavior.

switch_to_active_element()

Deprecated use driver.switch_to.active_element

switch_to_alert()

Deprecated use driver.switch_to.alert

switch_to_default_content()

Deprecated use driver.switch_to.default_content

switch_to_frame(frame_reference)

Deprecated use driver.switch_to.frame

switch_to_window(window_name)

Deprecated use driver.switch_to.window

application_cache

Returns a ApplicationCache Object to interact with the browser app cache

current_url

Gets the URL of the current page.

Usage:driver.current_url
current_window_handle

Returns the handle of the current window.

Usage:driver.current_window_handle
desired_capabilities

returns the drivers current desired capabilities being used

file_detector
log_types

Gets a list of the available log types

Usage:driver.log_types
mobile
name

Returns the name of the underlying browser for this instance.

Usage:
  • driver.name
orientation

Gets the current orientation of the device

Usage:orientation = driver.orientation
page_source

Gets the source of the current page.

Usage:driver.page_source
switch_to
title

Returns the title of the current page.

Usage:driver.title
window_handles

Returns the handles of all windows within the current session.

Usage:driver.window_handles

7.11. WebElement

class selenium.webdriver.remote.webelement.WebElement(parent, id_, w3c=False)

ベースクラス: object

DOM要素を表します。

一般に、ドキュメントとやりとりするすべて操作はこのインターフェイスを通じて実行されます。

すべてのメソッド呼び出しは、要素参照が依然として有効であることを確認するために鮮度チェックを行います。これは基本的に要素がまだDOMに接続されているかどうかを決定します。このテストが失敗すると、 StaleElementReferenceException がスローされ、以降のこのインスタンスへの呼び出しはすべて失敗します。

clear()

テキスト入力要素の場合はテキストをクリアします。

click()

要素をクリックします。

find_element(by='id', value=None)
find_element_by_class_name(name)

この要素の子要素内の要素をクラス名で検索します。

Args:
  • name - 検索するクラス名

find_element_by_css_selector(css_selector)

CSSセレクタによってこの要素の子要素内の要素を検索します。

Args:
  • css_selector - CSSのセクター文字列。例:’a.nav#home’

find_element_by_id(id_)

この要素の子要素内の要素をIDで検索します。

Args:
  • id - 検索する子要素のID。

この要素の子要素内の要素を可視リンクテキストで検索します。

Args:
  • link_text - 検索するテキスト文字列をリンクします。

find_element_by_name(name)

この要素の子要素内の要素を名前で検索します。

Args:
  • name - 検索する要素のnameプロパティ。

部分的に可視のリンクテキストによって、この要素の子要素内の要素を検索します。

Args:
  • link_text - 検索するテキスト文字列をリンクします。

find_element_by_tag_name(name)

この要素の子要素内の要素をタグ名で検索します。

Args:
  • name - htmlタグの名前(例:h1、a、span)

find_element_by_xpath(xpath)

xpathで要素を検索します。

Args:

xpath - 見つかる要素のxpath。 “// input [@ class = ‘myelement’]”

注意:ベースパスは、この要素の位置からの相対パスになります。

この要素の下にある最初のリンクが選択されます。

myelement.find_elements_by_xpath(".//a")

ただし、ページの最初のリンクが選択されます。

myelement.find_elements_by_xpath("//a")
find_elements(by='id', value=None)
find_elements_by_class_name(name)

この要素の子要素内の要素のリストをクラス名で検索します。

Args:
  • name - 検索するクラス名

find_elements_by_css_selector(css_selector)

CSSセレクターによって、この要素の子要素内の要素のリストを検索します。

Args:
  • css_selector - CSSのセクター文字列。例:’a.nav#home’

find_elements_by_id(id_)

この要素の子要素内の要素のリストをIDで検索します。

Args:
  • id - 検索する子要素のID。

この要素の子要素内の要素のリストを可視リンクテキストで検索します。

Args:
  • link_text - 検索するテキスト文字列をリンクします。

find_elements_by_name(name)

この要素の子要素内の要素のリストを名前で検索します。

Args:
  • name - 検索するnameプロパティ

この要素の子要素内の要素のリストをリンクテキストで検索します。

Args:
  • link_text - 検索するテキスト文字列をリンクします。

find_elements_by_tag_name(name)

この要素の子要素内の要素のリストをタグ名で検索します。

Args:
  • name - htmlタグの名前(例:h1、a、span)

find_elements_by_xpath(xpath)

xpathで要素内の要素を検索します。

Args:
  • xpath - xpathロケータ文字列。

注意:ベースパスは、この要素の位置からの相対パスになります。

この要素の下のすべてのリンクを選択します。

myelement.find_elements_by_xpath(".//a")

ただし、ページ内のすべてのリンクが選択されます。

myelement.find_elements_by_xpath("//a")
get_attribute(name)

指定された属性または要素のプロパティを取得します。

このメソッドは、指定された名前のプロパティの値を最初に返します。その名前のプロパティが存在しない場合は、同じ名前の属性の値を返します。その名前の属性がない場合、 None が返されます。

本当であるとみなされる値、すなわち「真」または「偽」と等しい値はブール値として返されます。他のすべての None ではない値は文字列として返されます。存在しない属性またはプロパティの場合、 None が返されます。

Args:
  • name - 取得する属性/プロパティの名前

例:

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
get_property(name)

要素の指定されたプロパティを取得します。

Args:
  • name - 取得するプロパティの名前

例:

# Check if the "active" CSS class is applied to an element.
text_length = target_element.get_property("text_length")
is_displayed()

要素がユーザーに表示されるかどうか。

is_enabled()

要素が有効かどうかを返します。

is_selected()

要素が選択されているかどうかを返します。

チェックボックスまたはラジオボタンが選択されているかどうかを確認するのに使えます。

screenshot(filename)
現在の要素のスクリーンショットを取得します。存在する場合はFalseを返します。
any IOError, else returns True. Use full paths in your filename.
Args:
  • filename: The full path you wish to save your screenshot to.
Usage:

element.screenshot(‘/Screenshots/foo.png’)

send_keys(*value)

要素への入力をシミュレートします。

Args:
  • value - A string for typing, or setting form fields. For setting file inputs, this could be a local file path.

単純なキーイベントを送信したり、フォームフィールドに入力するには、これを使用します。:

form_textfield = driver.find_element_by_name('username')
form_textfield.send_keys("admin")

これはファイル入力の設定にも使用できます。

file_input = driver.find_element_by_name('profilePic')
file_input.send_keys("path/to/profilepic.gif")
# Generally it's better to wrap the file path in one of the methods
# in os.path to return the actual path to support cross OS testing.
# file_input.send_keys(os.path.abspath("path/to/profilepic.gif"))
submit()

フォームを送信します。

value_of_css_property(property_name)

CSSプロパティの値。

id

Seleniumが使用する内部ID

これは主に内部向けです。2つのWeb要素が同じ要素を参照しているかどうかをチェックするなどの単純な使い方ができます。

if element1 == element2:
    print("These 2 are equal")
location

レンダリング可能なキャンバス内の要素の位置。

location_once_scrolled_into_view

THIS PROPERTY MAY CHANGE WITHOUT WARNING. Use this to discover where on the screen an element is so that we can click it. This method should cause the element to be scrolled into view.

Returns the top lefthand corner location on the screen, or None if the element is not visible.

parent

この要素が見つかったWebDriverインスタンスへの内部参照。

rect

要素のサイズと位置を持つ辞書。

screenshot_as_base64

現在の要素のスクリーンショットをbase64でエンコードされた文字列として取得します。

Usage:img_b64 = element.screenshot_as_base64
screenshot_as_png

現在の要素のスクリーンショットをバイナリデータとして取得します。

Usage:element_png = element.screenshot_as_png
size

要素のサイズ。

tag_name

この要素の tagName プロパティ。

text

要素のテキスト。

7.12. UIサポート

class selenium.webdriver.support.select.Select(webelement)

ベースクラス: object

deselect_all()

選択されたすべてのエントリをクリアします。これは、SELECTが複数の選択をサポートしている場合にのみ有効です。SELECTが複数の選択肢をサポートしていない場合、NotImplementedErrorをスローします。

deselect_by_index(index)

指定したインデックスのオプションの選択を解除します。これは要素の”index”属性を調べることによって行われます。単にカウントするだけではありません。

Args:
  • index - このインデックスのオプションは選択解除されます。

指定したインデックスを持つオプションがSELECTにない場合、NoSuchElementExceptionをスローします

deselect_by_value(value)

引数に一致する値を持つすべてのオプションの選択を解除します。つまり、 “foo”を指定すると、次のようなオプションの選択が解除されます。

<option value=”foo”>Bar</option>
Args:
  • value - 照合する値

指定した値を持つオプションがSELECTにない場合、NoSuchElementExceptionをスローします

deselect_by_visible_text(text)

引数に一致するテキストを表示するすべてのオプションの選択を解除します。つまり、 “Bar”を指定すると、次のようなオプションの選択が解除されます。

<option value=”foo”>Bar</option>

Args:
  • text - 一致する目に見えるテキスト

select_by_index(index)

指定したインデックスでオプションを選択します。これは要素の”index”属性を調べることによって行われます。単にカウントするだけではありません。

Args:
  • index - このインデックスのオプションが選択されます。

指定したインデックスを持つオプションがSELECTにない場合、NoSuchElementExceptionをスローします

select_by_value(value)

引数に一致する値を持つすべてのオプションを選択します。つまり、”foo”を指定すると、次のようなオプションが選択されます。

<option value=”foo”>Bar</option>

Args:
  • value - 照合する値

指定した値を持つオプションがSELECTにない場合、NoSuchElementExceptionをスローします

select_by_visible_text(text)

引数に一致するテキストを表示するすべてのオプションを選択します。つまり、”Bar”を指定すると、次のようなオプションが選択されます。

<option value=”foo”>Bar</option>
Args:
  • text - 一致する目に見えるテキスト

SELECTに指定されたテキストを持つオプションがない場合、NoSuchElementExceptionをスローします

all_selected_options

このselectタグに属するすべての選択されたオプションのリストを返します。

first_selected_option

この選択タグ内の最初に選択されたオプション(または通常選択中の現在選択されているオプション)

options

このselectタグに属するすべてのオプションのリストを返します。

class selenium.webdriver.support.wait.WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

ベースクラス: object

until(method, message='')

戻り値がFalseでない限り、ドライバで提供されたメソッドを引数として呼び出します。

until_not(method, message='')

戻り値がFalseになるまで、ドライバで提供されたメソッドを引数として呼び出します。

7.13. カラーサポート

class selenium.webdriver.support.color.Color(red, green, blue, alpha=1)

ベースクラス: object

色変換サポートクラス

from selenium.webdriver.support.color import Color

print(Color.from_string('#00ff33').rgba)
print(Color.from_string('rgb(1, 255, 3)').hex)
print(Color.from_string('blue').rgba)
static from_string(str_)
hex
rgb
rgba

7.14. 期待される条件サポート

class selenium.webdriver.support.expected_conditions.alert_is_present

ベースクラス: object

アラートが存在することを期待してください。

class selenium.webdriver.support.expected_conditions.element_located_selection_state_to_be(locator, is_selected)

ベースクラス: object

要素の位置を特定し、指定された選択状態がその状態にあるかどうかを確認すること。ロケータは(by、path)のタプルです。is_selectedはブール値です。

class selenium.webdriver.support.expected_conditions.element_located_to_be_selected(locator)

ベースクラス: object

配置される要素の期待値が選択されます。ロケータは(by、path)のタプルです。

class selenium.webdriver.support.expected_conditions.element_selection_state_to_be(element, is_selected)

ベースクラス: object

指定された要素が選択されているかどうかを確認するための期待値。要素はWebElementオブジェクトis_selectedはブール値です。

class selenium.webdriver.support.expected_conditions.element_to_be_clickable(locator)

ベースクラス: object

要素をチェックするための期待値が表示され、クリックできるように有効になります。

class selenium.webdriver.support.expected_conditions.element_to_be_selected(element)

ベースクラス: object

選択を確認するための期待値が選択されます。要素はWebElementオブジェクトです。

class selenium.webdriver.support.expected_conditions.frame_to_be_available_and_switch_to_it(locator)

ベースクラス: object

指定されたフレームが切り替えることができるかどうかをチェックするための期待。フレームが利用可能な場合、指定されたドライバを指定されたフレームに切り替えます。

class selenium.webdriver.support.expected_conditions.invisibility_of_element_located(locator)

ベースクラス: object

An Expectation for checking that an element is either invisible or not present on the DOM.

DOM上に要素が見えないか、存在しないかを確認するための期待。 要素を見つけるためのロケータ。

class selenium.webdriver.support.expected_conditions.new_window_is_opened(current_handles)

ベースクラス: object

新しいウィンドウが開かれ、ウィンドウの数が増えるとの期待

class selenium.webdriver.support.expected_conditions.number_of_windows_to_be(num_windows)

ベースクラス: object

ウィンドウの数が一定の値になることの期待。

class selenium.webdriver.support.expected_conditions.presence_of_all_elements_located(locator)

ベースクラス: object

Webページに少なくとも1つの要素が存在するかどうかを確認する必要があります。ロケータは、要素が見つかるとWebElementsのリストを返します

class selenium.webdriver.support.expected_conditions.presence_of_element_located(locator)

ベースクラス: object

要素がページのDOM上に存在するかどうかを確認するための期待。これは要素が可視であることを必ずしも意味しません。locator - 見つかった要素が見つかるとWebElementを返します

class selenium.webdriver.support.expected_conditions.staleness_of(element)

ベースクラス: object

要素がDOMに接続されなくなるまで待ちます。 elementは待機する要素です。要素がまだDOMにアタッチされている場合はFalseを返し、そうでない場合はtrueを返します。

class selenium.webdriver.support.expected_conditions.text_to_be_present_in_element(locator, text_)

ベースクラス: object

指定されたテキストが指定された要素に存在するかどうかをチェックするための期待値。ロケータ、テキスト

class selenium.webdriver.support.expected_conditions.text_to_be_present_in_element_value(locator, text_)

ベースクラス: object

指定されたテキストが要素のロケータ、テキストに存在するかどうかの確認

class selenium.webdriver.support.expected_conditions.title_contains(title)

ベースクラス: object

タイトルに大文字小文字を区別する部分文字列が含まれているかどうかを確認する必要があります。titleは期待されるタイトルの断片です。タイトルが一致するとTrueを返し、そうでない場合はFalseを返します。

class selenium.webdriver.support.expected_conditions.title_is(title)

ベースクラス: object

ページのタイトルを確認するための期待。titleは予想されるタイトルです。完全一致でなければなりません。タイトルが一致する場合はTrueを返し、そうでない場合はfalseを返します。

class selenium.webdriver.support.expected_conditions.visibility_of(element)

ベースクラス: object

ページのDOM上に存在することがわかっている要素が表示されているかどうかを確認する必要があります。可視性は、要素が表示されるだけでなく、高さと幅が0より大きいことを意味します。要素は、WebElementが表示されたら(同じ)WebElementを返します。

class selenium.webdriver.support.expected_conditions.visibility_of_any_elements_located(locator)

ベースクラス: object

Webページに少なくとも1つの要素が表示されていることを確認する必要があります。ロケータは、要素が見つかるとWebElementsのリストを返します

class selenium.webdriver.support.expected_conditions.visibility_of_element_located(locator)

ベースクラス: object

ある要素がページのDOM上に存在し、可視であることを確認するための期待。可視性は、要素が表示されるだけでなく、0より大きい高さと幅も持つことを意味します。locator - 要素が見つかるとWebElementを返します。