De fato, haverá muitos poços para automação, alguns precisam ser preenchidos e outros precisam ser ignorados. Os controles de data e hora são controles que precisamos ignorar. Não pense em como clicar em todos os tipos de controles de data.
Primeiro, vamos dar uma olhada no formulário front-end do controle de data e hora
Sim. Sim. O controle de data e hora é uma caixa de entrada. Você pode inserir a data diretamente como uma caixa de texto normal? Vamos tentar.
Segundo, o experimento
1. O exemplo mais simples, send_keys diretamente. (O campo de data do seletor de datas permite a entrada)
Endereço do teste: http://jqueryui.com/resources/demos/datepicker/other-months.html
de selênio importação webdriver tempo de importação
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. Com atributo somente leitura. (O campo de data do seletor de datas não permite entrada)
Olhando para a próxima figura, existe um atributo readonly = 'true' .Esta caixa de data não permite entrada direta
de selênio importação webdriver tempo de importação
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 = "Erro de análise do KaTeX: 'EOF' esperado, obtido '#' na posição 48:… ('readonly') "# ̲ 2.jQuery, remove attribute ... ('input [id = c-date1]'). Attr (' readonly ', false) "# 3.jQuery, definido como false
js = " $ (' input [id = c-date1] '). attr (' readonly ',' ') " # 4.jQuery, definido como vazio ( O mesmo que 3)
driver.execute_script (js)
driver.find_element_by_id ( 'c- date1 ' ) .send_keys ( '10 /
16/2017 ' ) time.sleep ( 15 )
driver.quit () O exemplo
acima apresenta 4 tipos de métodos js, fique à vontade para usar.
Resumo:
Para lidar com o tópico dos controles de data e hora, é destacado o uso de js no selênio. A idéia geral pode ser resumida como: "Evite o pesado e o leve". Não deixe o Selenium fazer coisas que ele não fará ou não é bom. Se ele tiver que fazê-lo, encontre um ajudante.