selenium自動化jsカレンダーコントロール操作
1616 ワード
カレンダーコントロールはweb上でよく出会うシーンで、入力できることもありますが、入力できないこともあります.次に12306サイトを例に、カレンダーコントロールがreadonly属性の問題を解決する方法を説明します.
基本的な考え方:jsでreadonly属性を削除し、日付テキストの内容を直接入力します.
Googleで入力ボックスのプロパティを表示します:readonly="",次のようにします.
jsでreadonlyプロパティを削除するには:
1.jsで要素属性を削除する基本構想:まず要素にナビゲートし、removeAttribute(「readonly」)方法で属性を削除する
2.出発日要素idは:train_Date,対応jsコード:'goData=document.getElementById("train_date");'
3.removeAttribute()メソッドを使用して属性を削除する:'goData.removeAttribute("readonly")'
日付を入力:
1.日付を入力する前に、必ずテキストを空にしてください.そうしないと、入力できません.
2.ここに日付を入力すると、カレンダーコントロールが自動的にポップアップされます.
jsメソッドを使用して日付を入力すると、カレンダーはポップアップされません.
基本的な考え方:jsでreadonly属性を削除し、日付テキストの内容を直接入力します.
Googleで入力ボックスのプロパティを表示します:readonly="",次のようにします.
jsでreadonlyプロパティを削除するには:
1.jsで要素属性を削除する基本構想:まず要素にナビゲートし、removeAttribute(「readonly」)方法で属性を削除する
2.出発日要素idは:train_Date,対応jsコード:'goData=document.getElementById("train_date");'
3.removeAttribute()メソッドを使用して属性を削除する:'goData.removeAttribute("readonly")'
日付を入力:
1.日付を入力する前に、必ずテキストを空にしてください.そうしないと、入力できません.
2.ここに日付を入力すると、カレンダーコントロールが自動的にポップアップされます.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.12306.cn')
# js readonly
goData = 'document.getElementById("train_date").removeAttribute("readonly");'
# webdriver js
driver.execute_script(goData)
#
driver.find_element_by_id('train_date').clear()
driver.find_element_by_id('train_date').send_keys('2019-07-01')
jsメソッドを使用して日付を入力すると、カレンダーはポップアップされません.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.12306.cn')
# readonly
goData = 'document.getElementById("train_date").removeAttribute("readonly");'
# webdriver js
driver.execute_script(goData)
# js
js_value = 'document.getElementById("train_date").value = "2019-07-01"'
# webdriver js
driver.execute_script(js_value)