SeleniumBasic SelectElementClass 選択可能なWeb要素操作

リファレンス

概要

ドロップダウン等の選択可能なWeb要素ハンドル用のクラスの解説です。

オブジェクト設定

・変数宣言

Dim select_ele As SelectElement

・親クラス:WebElement.AsSelect

文法

Set select_ele = driver.[SearchContext].AsSelect
select_ele.[メソッド]

メソッド・プロパティ

メソッド

スクロールできます
Name解説ShortExample
DeselectAll選択したエントリの全クリア。複数選択が可能な場合に有効select_ele.DeselectAll
DeselectByIndexインデックスにて選択解除select_ele.DeselectByIndex 0
DeselectByTextテキストにて選択解除select_ele.DeselectByText "複数選択可能なセレクトボックス・表示する値3"
DeselectByValue値にて選択解除select_ele.DeselectByValue "2"
SelectByIndexインデックスにて選択ele.SelectByIndex 1
SelectByTextテキストにて選択ele.SelectByText "Option 2"
SelectByValue値にて選択ele.SelectByValue "2"

※Short Exampleは、動作確認ができたコードを記載しています。

プロパティ

スクロールできます
Name解説ShortExample
AllSelectedOptionsselect 要素内で選択されている全オプションを取得Set eles = select_ele.AllSelectedOptions
IsMultiple親要素が複数選択をサポートしているかどうかを示す値を取得します。Debug.Print ele.IsMultiple
Optionsselect 要素のオプションのリストを取得Set elms = ele.Options
SelectedOptionselect 要素内で選択された項目を取得Debug.Print "Selected: " & ele.SelectedOption.Text

※Short Exampleは、動作確認ができたコードを記載しています。

Example

Handle_Dropdown_List

Private Sub Handle_Dropdown_List()
    Dim Assert As New Selenium.Assert
    Dim driver As New ChromeDriver
    driver.Get "https://the-internet.herokuapp.com/dropdown"
    driver.Wait 2000
    Dim ele As SelectElement
    Set ele = driver.FindElementById("dropdown").AsSelect
    
    ele.SelectByText "Option 2"
    driver.Wait 1500
    ele.SelectByIndex 1
    driver.Wait 1500
    ele.SelectByValue "2"

    Debug.Print ele.IsMultiple
    Debug.Print "Selected: " & ele.SelectedOption.Text
    Dim elms As WebElements, elm As WebElement
    Set elms = ele.Options
    For Each elm In elms
        Debug.Print elm.Text
    Next elm
    
    driver.Wait 1500
'    Stop
    driver.Quit
End Sub

Multi_SelectElement

Private Sub Multi_SelectElement()
    Dim Keys As New Selenium.Keys
    Dim driver As New ChromeDriver
    driver.Get "https://bayashita.com/p/entry/show/24"
    Dim select_ele As SelectElement
    Set select_ele = driver.FindElementByXPath("//*[contains(@id,'list1')]").AsSelect
    Debug.Print "MultSelect: " & select_ele.IsMultiple
    
    Dim i As Integer
    For i = 0 To 4
        select_ele.SelectByIndex i
    Next i
    
    select_ele.DeselectByIndex 0
    select_ele.DeselectByText "複数選択可能なセレクトボックス・表示する値3"
    select_ele.DeselectByValue "2"
    select_ele.DeselectAll
    
    For i = 0 To 4
        select_ele.SelectByIndex i
    Next i

    Stop
    Dim ele As WebElement, eles As WebElements
    Set eles = select_ele.AllSelectedOptions
    For Each ele In eles
        Debug.Print ele.Text
    Next ele
    
    Stop
    driver.Quit
End Sub
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAを中心とした自動化、効率化の手法を紹介しています。現在は、SeleniumBasicのexamplesを紹介しています。その内、SeleniumBasic以外の手法も掲載したいと思っております。