Acessando elementos no DOM da sombra
é possívelencontre elementos dentro do Shadow DOM com python-selênio?
Exemplo de caso de uso:
eu tenho istoinput
comtype="date"
:
<input type="date">
E eu gostaria de clicaro botão seletor de data à direita e escolha uma data no calendário.
Se você inspecionar o elemento nas Ferramentas do desenvolvedor do Chrome e expandir o nó raiz da sombra da entrada de data, verá que o botão está aparecendo como:
<div pseudo="-webkit-calendar-picker-indicator" id="picker"></div>
Captura de tela demonstrando a aparência no Chrome:
Encontrar o botão "selecionador" por ID resulta emNoSuchElementException
:
>>> date_input = driver.find_element_by_name('bday')
>>> date_input.find_element_by_id('picker')
...
selenium.common.exceptions.NoSuchElementException: Message: no such element
Eu também tentei usar::shadow
e/deep/
localizadores conforme sugeridoaqui:
>>> driver.find_element_by_css_selector('input[name=bday]::shadow #picker')
...
selenium.common.exceptions.NoSuchElementException: Message: no such element
>>>
>>> driver.find_element_by_css_selector('input[name=bday] /deep/ #picker')
...
selenium.common.exceptions.NoSuchElementException: Message: no such element
Observe que eu posso alterar a data na entrada enviando chaves para ela:
driver.find_element_by_name('bday').send_keys('01/11/2014')
Mas quero definir a data especificamente, escolhendo-a em um calendário.