2020-03-03

テキストを入力する - selenium - python

ウェブページ内の検索窓や入力フォームにテキストを入力する。

YAHOOのページから検索をしてみる。

・入力部分の要素を取得

YAHOOを開いて検索窓を右クリックから「検証」をクリックしhtmlを表示する。


テキストを入力する場合は <input> タグを取得する。
該当部分を抜き出すと...
...
    <input type="search" name="p" autocomplete="off" aria-label="検索したいキーワードを入力してください" aria-live="assertive" class="sc-lhVmIH bRNKMv">
...

属性 aria-label="検索したいキーワードを入力してください" で指定するとよさそう。
XPathで記載すると
//input[@aria-label="検索したいキーワードを入力してください"]
となる。
(表示したhtml上で右クリックから「Copy ⇒ Copy XPath」で取ってもOK)

同様に「検索」ボタンの要素も調べておく。
検索ボタンのXPath: //span[text()="検索"]


・テキストを入力する

テキストの入力は取得した要素に対して .send_keys()で実行する。
引数に入力したい文字列をそのまま記載すればよい。
「天気 明日」と入力してみる。
from selenium import webdriver

brows = webdriver.Chrome()

brows.get( 'https://www.yahoo.co.jp/' )
brows.maximize_window()

element = brows.find_element_by_xpath( '//input[@aria-label="検索したいキーワードを入力してください"]' )

element.send_keys( '天気 明日' )


あとは検索ボタンをクリック。
from selenium import webdriver

brows = webdriver.Chrome()

brows.get( 'https://www.yahoo.co.jp/' )
brows.maximize_window()

element = brows.find_element_by_xpath( '//input[@aria-label="検索したいキーワードを入力してください"]' )

element.send_keys( '天気 明日' )

element = brows.find_element_by_xpath( '//span[text()="検索"]' )

element.click()



毎回要素を変数に代入するのも面倒なので、まとめて書くと...
from selenium import webdriver

brows = webdriver.Chrome()

brows.get( 'https://www.yahoo.co.jp/' )
brows.maximize_window()

brows.find_element_by_xpath( '//input[@aria-label="検索したいキーワードを入力してください"]' ).send_keys( '天気 明日' )
brows.find_element_by_xpath( '//span[text()="検索"]' ).click()


0 件のコメント:

コメントを投稿