我如何 select 使用 python 在带有硒的 DatePicker 中的日期
How can I select a date in a DatePicker with selenium using python
我想 select 这个 DatePicker 的日期 :
到目前为止,我只能select今天的日期。但我不知道如何 select 一个具体的日期。从这里我需要 select 昨天的约会。这是我到目前为止所做的:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
driver = webdriver.Chrome(chromedriver)
driver.get('https://www.ut.com.sv/reportes?p_auth=vUIS4sqn&p_p_id=MenuReportesEstadisticos_WAR_CompletePublicReports&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_MenuReportesEstadisticos_WAR_CompletePublicReports_reportName=25cargosdelsistema')
elm = driver.find_element_by_link_text('Cargos del Sistema')
driver.implicitly_wait(5)
elm.click()
#TIPO
drpmedicion=driver.find_element_by_id('tipo')
drpmed=Select(drpmedicion)
driver.implicitly_wait(2)
drpmed.select_by_visible_text('Indicativo')
driver.implicitly_wait(2)
#SALIDA
drpsalida=driver.find_element_by_id('outType')
drpsal=Select(drpsalida)
driver.implicitly_wait(2)
drpsal.select_by_visible_text('csv')
#FECHAS INICIO
date1=driver.find_element(By.NAME,'fecha_desde')
date1.click()
driver.implicitly_wait(2)
date1.click()
driver.implicitly_wait(2)
date2=driver.find_element(By.CLASS_NAME,'picker__button--today')
date2.click()
driver.implicitly_wait(5)
#FECHAS FIN
date3=driver.find_element(By.NAME,'fecha_hasta')
driver.implicitly_wait(2)
date3.click()
driver.implicitly_wait(2)
date3.click()
driver.implicitly_wait(5)
date4=driver.find_elements(By.CLASS_NAME,'picker__button--today')
date4[1].click()
driver.implicitly_wait(5)
#CLICK FINAL
btn=driver.find_element(By.XPATH, '//*[@id="portlet_FormularioReportesEstadisticos_WAR_CompletePublicReports"]/div/div/div/input')
btn.click()
您可以通过多种方式解决这个问题,最简单的方法是根据链接网站使用的属性 data-pick
获取元素:
<td role="presentation">
<div class="picker__day picker__day--infocus" data-pick="1590966000000" role="gridcell">1</div>
</td>
该值是当天的纪元,以毫秒为单位,您可以这样获取(将其更改为您使用的任何日期格式)
import time
import datetime
selectedDate = "01/06/2020"
epoch = int(time.mktime(datetime.datetime.strptime(selectedDate, "%d/%m/%Y").timetuple()))*1000
将纪元值添加到您的选择器中,从那里获取父元素并单击它。
另一种点击它的方法是通过 Selenium 的 execute_script
. include/js/pickadate/picker.js
handles when you click on the date with an on('click'...
event. You could invoke that by using a querySelector and then using the .click()
方法执行 'raw' Javascript。
我想 select 这个 DatePicker 的日期 :
到目前为止,我只能select今天的日期。但我不知道如何 select 一个具体的日期。从这里我需要 select 昨天的约会。这是我到目前为止所做的:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
driver = webdriver.Chrome(chromedriver)
driver.get('https://www.ut.com.sv/reportes?p_auth=vUIS4sqn&p_p_id=MenuReportesEstadisticos_WAR_CompletePublicReports&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_MenuReportesEstadisticos_WAR_CompletePublicReports_reportName=25cargosdelsistema')
elm = driver.find_element_by_link_text('Cargos del Sistema')
driver.implicitly_wait(5)
elm.click()
#TIPO
drpmedicion=driver.find_element_by_id('tipo')
drpmed=Select(drpmedicion)
driver.implicitly_wait(2)
drpmed.select_by_visible_text('Indicativo')
driver.implicitly_wait(2)
#SALIDA
drpsalida=driver.find_element_by_id('outType')
drpsal=Select(drpsalida)
driver.implicitly_wait(2)
drpsal.select_by_visible_text('csv')
#FECHAS INICIO
date1=driver.find_element(By.NAME,'fecha_desde')
date1.click()
driver.implicitly_wait(2)
date1.click()
driver.implicitly_wait(2)
date2=driver.find_element(By.CLASS_NAME,'picker__button--today')
date2.click()
driver.implicitly_wait(5)
#FECHAS FIN
date3=driver.find_element(By.NAME,'fecha_hasta')
driver.implicitly_wait(2)
date3.click()
driver.implicitly_wait(2)
date3.click()
driver.implicitly_wait(5)
date4=driver.find_elements(By.CLASS_NAME,'picker__button--today')
date4[1].click()
driver.implicitly_wait(5)
#CLICK FINAL
btn=driver.find_element(By.XPATH, '//*[@id="portlet_FormularioReportesEstadisticos_WAR_CompletePublicReports"]/div/div/div/input')
btn.click()
您可以通过多种方式解决这个问题,最简单的方法是根据链接网站使用的属性 data-pick
获取元素:
<td role="presentation">
<div class="picker__day picker__day--infocus" data-pick="1590966000000" role="gridcell">1</div>
</td>
该值是当天的纪元,以毫秒为单位,您可以这样获取(将其更改为您使用的任何日期格式)
import time
import datetime
selectedDate = "01/06/2020"
epoch = int(time.mktime(datetime.datetime.strptime(selectedDate, "%d/%m/%Y").timetuple()))*1000
将纪元值添加到您的选择器中,从那里获取父元素并单击它。
另一种点击它的方法是通过 Selenium 的 execute_script
. include/js/pickadate/picker.js
handles when you click on the date with an on('click'...
event. You could invoke that by using a querySelector and then using the .click()
方法执行 'raw' Javascript。