前回、自動操作としてPythonのSeleniumの環境作成まで紹介しましたが、
今回は実際に自動操作する上で必要となるメソッドを紹介します。
全てを紹介することは出来ませんので、よく使われる部分をピックアップしています
その他のメソッドは、以下のサイトを参照してください
https://www.seleniumqref.com/api/webdriver_abc_python.html
ページの操作
ブラウザの自動操作の基本となる、ブラウザを開く、ページにアクセスする、ブラウザを終了するメソッドは以下の通りです。
WEBページにアクセス:driver.get(‘https://www.google.com/’)
ブラウザ終了: driver.quit()
要素の取得
WEBページを開いた後は、そのコンテンツの要素を取得する必要があります。取得する方法はいろんなパターンがありますが、よく利用するものだけ以下に紹介しています。
class属性 driver.find_element_by_class_name(‘CLASS’)
name属性 driver.find_element_by_name(‘NAME’)
CSSセレクタ driver.find_element_css_selector(‘CSSセレクタ’)
XPath driver.find_element_by_xpath(‘XPATH’)
その中でもよく利用するのが、CSSセレクタです。使い方の基本はタブの構成と属性名とを組み合わせて特定の要素を取得します。
また、取得の方法は2種類有り、「find_element」は特定の1つの要素を返しますが、「find_elements」と最後にsがつくと、条件にあった複数の要素をLIST形式で返します。
例として、CSSセレクタで複数要素を取得して、その取得した要素のテキストを表示する場合は以下のように行います。
for element in driver.find_elements_by_css_selector('CSSセレクタ')
print(element.text)
CSSセレクタの設定次第で柔軟に要素の取得が可能となります。以下のよく使う記述例を紹介します。その他いろいろありますので自分で探してみるのも楽しいと思います。
子要素にのみ指定 : タグ名 > タグ名
最初の要素のみ : ul li:first-child
n番目の要素のみ : ul li:nth-child(n)
要素の操作
要素を取得することが出来たら、今度はその要素を操作する方法を紹介します。
属性値取得 element.get_attribute(“属性名”)
テキスト入力 element.send_keys(“入力する文字列”)
テキスト削除 element.clear()
クリック element.click()
特殊キー入力 element.send_keys(Keys.ENTER)
エンター Keys.ENTER
バックスペース Keys.BACK_SPACE
エスケープ Keys.ESCAPE
タブ Keys.TAB
Select(element).select_by_value(value値)
Select(element).select_by_index(インデックス)
Select(element).select_by_text(“文字列”)
Select(element).deselect_by_value(value値)
Select(element).deselect_by_index(インデックス)
Select(element).deselect_by_text(“文字列”)
全て選択解除 Select(element).deselect_all()
使えるテクニック
HTML要素が表示されるまで待つ方法(例:最長30秒)
selector = 'CSS'
element = WebDriverWait(driver, 30).until(
EC.visibility_of_element_located((By.CSS_SELECTOR, selector))
)
要素のクリックが効かない場合
JavaScriptを実行させて、クリックをすると動作することがあります
driver.execute_script('arguments[0].click();', element)
ダイアログアラートが出現に対する応答
YESを押す: Alert(driver).accept()
NOを押す: Alert(driver).dismiss()