De hecho, habrá muchos pozos para la automatización. Algunos pozos necesitan ser completados, y otros deben ser evitados. Los controles de fecha y hora son controles que debemos omitir. No piense en cómo hacer clic en todo tipo de controles de fecha.
Primero, echemos un vistazo a la forma inicial del control de fecha y hora
Sí, es correcto. El control de fecha y hora es un cuadro de entrada. ¿Puede ingresar la fecha directamente como un cuadro de texto normal? Vamos a intentarlo
Segundo, el experimento.
1. El ejemplo más simple, send_keys directamente. (El campo de fecha del selector de fecha permite la entrada)
Dirección de prueba: http://jqueryui.com/resources/demos/datepicker/other-months.html
de selenio importación WebDriver importación tiempo
driver = webdriver.Chrome ()
driver.get ( “http://jqueryui.com/resources/demos/datepicker/other-months.html” )
driver.find_element_by_id ( 'datepicker' ) .send_keys ( “16/10/2017 " )
Time.sleep ( 5 )
driver.quit ()
2. Con atributo de solo lectura. (El campo de fecha del selector de fecha no permite la entrada)
Mirando hacia atrás en la siguiente imagen, hay un atributo readonly = 'true'. Este cuadro de fecha no permite la entrada directa
de selenio importación WebDriver importación tiempo
driver = webdriver.Chrome ()
driver.implicitly_wait ( 20 )
driver.get ( “http: //xxxx/pages/systemManagement/login.html” )
driver.find_element_by_xpath ( "/ html / body / div / input" ) .send_keys ( 'xx' )
driver.find_element_by_xpath ( '/ html / body / div1 / input' ) .send_keys ( 'xxx' )
driver.find_element_by_xpath ( '/ html / body / div / div [7]' ) .click ()
driver .find_element_by_xpath ( '/ html / body / li [1] / a' ) .click ()
# js = “document.getElementById ('c-date1'). removeAttribute ('readonly')” # 1. 原 生 js , 移除 属性
# js = “Error de análisis de KaTeX: se esperaba 'EOF', se obtuvo '#' en la posición 48: ... ('readonly') "# ̲ 2.jQuery, remove attribute ... ('input [id = c-date1]'). Attr (' readonly ', false) "# 3.jQuery, establecido en false
js = " $ (' input [id = c-date1] '). attr (' readonly ',' ') " # 4.jQuery, configurado como vacío ( Igual que 3)
driver.execute_script (js)
driver.find_element_by_id ( 'c-date1' ) .send_keys ( '10 /
16/2017 ' ) time.sleep ( 15 )
driver.quit () Lo
anterior presenta 4 tipos de métodos js, no dude en usarlos.
Resumen:
Para abordar el tema de los controles de fecha y hora, se presenta el uso de js en selenio. La idea general se puede resumir como: "Evita lo pesado y lo ligero". No dejes que Selenium haga cosas que no hará o que no es bueno. Si tiene que hacerlo, busca un ayudante.