1

この記事は最終更新日から1年以上が経過しています。

Selenium でテキストボックスに入力する vba python

Selenium or seleniumbasicテキストボックスに文字列を入力する

前提

・vbaの場合は seleniumbasic pythonの場合はselenium がインストールされている
・環境はWIndows

ポイント

1, inputタグに入力する前に消す Clear ※これがないと追記されてしまう。
2, valueの値でSendKeysができてるか確認
3, 早すぎると入力できてるか不安と言われるので sleep や waitを使う(これは状況に応じて)

以上を考慮し、
inputタグ(テキストボックス)にidのある場合で関数を作成してみました。

VBAの場合

引渡値 = ①クロームドライバー ②inputタグのid ③inputタグに入力する値
戻り値 = 5秒以内に 成功=true 失敗=false

inputタグ(テキストボックス)に入力する
Public Function MoveTextBox(driver As ChromeDriver, id As String, atai As String) As Boolean            
   Dim timeout As Date
   timeout = DateAdd("s", 5, Now)       
   Do Until driver.FindElementById(id).Value = atai
     driver.FindElementById(id).Clear
     driver.Wait 100
     driver.FindElementById(id).SendKeys (atai)
    driver.Wait 100
    If Now > timeout Then
      MoveTextBox = False
      Exit Function
    End If              
   Loop
   MoveTextBox = True        
 End Function


Pythonの場合

引渡値 = ①クロームドライバー ②inputタグのid ③inputタグに入力する値
戻り値 = 5秒以内に 成功=true 失敗=false
sleepはなくてもよいのですが、あったほうが見ていてわかりやすいと評判がいいです。

inputタグ(テキストボックス)に入力する

import time
def move_textbox(driver, id, atai):
    start = time.time()
    while driver.find_element_by_id(id).get_attribute('value')!=atai:
        driver.find_element_by_id(id).clear()
        time.sleep(1)        
        driver.find_element_by_id(id).send_keys(atai)
        time.sleep(1)

        if time.time()-start > 5 :
            return False


    return True

関数の例はinputタグにidのある場合ですが、
nameの場合は適宜
FindElementByName
find_element_by_name
に変えれば使いまわしがきくと思います

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
apple123
会社ではWEBスクレイピングの依頼が多すぎて。ソースの美しさ簡略さよりも超高速での納品をもとめられる毎日。検索してもピタッとはまる内容がない場合Qiitaにメモしています。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン