Cet article utilise Python 3.6.0 et Selenium 3.4.0 (WebDriver est Google Chrome).
J'ai eu du mal à obtenir le contrôle Datepicker (calendrier déroulant) créé par ASP, je vais donc laisser une note.
Le contrôle Datepicker est un contrôle qui descend le calendrier lorsque l'utilisateur clique dessus. Lorsque j'ai vérifié le contrôle abandonné avec Google Chrome, j'ai constaté qu'il était composé de balises Table. Par conséquent, il peut être obtenu dans l'ordre suivant.
J'ai créé une fonction qui clique sur la date correspondante lorsque la date souhaitée est spécifiée.
DatepickerMove.py
#Transmettez la variable où la page avec le contrôle Datepicker est récupérée au navigateur
#Assurez-vous que le contrôle Datepicker est cliqué avant d'exécuter la fonction
def DatepickerMove(browser, year, month, day):
#Cliquez sur le titre pour afficher l'écran de sélection année / mois
calendar_title = browser.find_element_by_id('CalendarExtender1_title')
calendar_title.click()
calendar_prev = browser.find_element_by_id('CalendarExtender1_prevArrow')
calendar_next = browser.find_element_by_id('CalendarExtender1_nextArrow')
time.sleep(1)
#Vérifiez l'année. S'il est différent, déplacez-le dans le sens correspondant en fonction de la taille
#Limiter la boucle en cas d'emballement
limit_count = 100
for i in range(limit_count):
if calendar_title.text == year:
break
elif calendar_title.text > year:
calendar_prev.click()
elif calendar_title.text < year:
calendar_next.click()
else:
print('Le nombre spécifié de processus a été dépassé')
return
time.sleep(1)
#Obtenez mensuellement
month_title = year + 'Année' + month + 'Mois'
calendar_month = browser.find_element_by_xpath('//div[@title=\"' + month_title + '\"]')
calendar_month.click()
time.sleep(1)
#Obtenez la date
day_title = month_title + day + 'journée'
calendar_day = browser.find_element_by_xpath('//div[@title=\"' + day_title + '\"]')
calendar_day.click()
time.sleep(1)
DatepickerMove.py
browser.find_element_by_id('CalendarExtender1_title')
calendar_title.click()
calendar_prev = browser.find_element_by_id('CalendarExtender1_prevArrow')
calendar_next = browser.find_element_by_id('CalendarExtender1_nextArrow')
Cliquer sur le champ Datepicker générera un calendrier pour la date (c'est-à-dire un calendrier régulier). Si vous cliquez sur le titre (par exemple, la partie qui dit "Avril 2017") Cette fois, l'année et janvier-décembre peuvent être sélectionnés à la place de la date. L'agencement de janvier à décembre est différent de la date, car il comporte 12 boutons et l'agencement est fixe et facile à manipuler. Il a changé une fois pour l'état de l'année et du mois.
Nous avons également un élément qui passe à l'année précédente et à l'année suivante lorsque vous cliquez dessus.
DatepickerMove.py
limit_count = 100
for i in range(limit_count):
if calendar_title.text == year:
break
elif calendar_title.text > year:
calendar_prev.click()
elif calendar_title.text < year:
calendar_next.click()
else:
print('Le nombre spécifié de processus a été dépassé')
return
Si vous cliquez sur le titre de la même manière que ci-dessus, l'année deviendra sélectionnable. Cependant, étant donné que la disposition des années change en fonction de l'année en cours, j'ai pensé qu'il serait plus sûr de faire une boucle et de vérifier chaque année, alors je n'ai pas beaucoup réfléchi.
DatepickerMove.py
#Obtenez mensuellement
month_title = year + 'Année' + month + 'Mois'
calendar_month = browser.find_element_by_xpath('//div[@title=\"' + month_title + '\"]')
calendar_month.click()
time.sleep(1)
#Obtenez la date
day_title = month_title + day + 'journée'
calendar_day = browser.find_element_by_xpath('//div[@title=\"' + day_title + '\"]')
calendar_day.click()
Dans le cas d'une date, la date du mois précédent peut être sélectionnée en fonction du calendrier. Par exemple, si vous essayez d'obtenir le 25 mars 2017 et spécifiez 25 dans le texte, vous obtiendrez le 25 février 2017. Par conséquent, j'ai pensé qu'il serait plus sûr de sélectionner le titre avec le nom complet, alors j'ai fait cela.
Cela fait moins d'un mois que j'ai appris Python pour la première fois, le codage peut donc être un problème. Cependant, c'est un langage amusant dans lequel vous pouvez facilement faire diverses choses, même avec une expérience peu profonde.
Recommended Posts