Ist es möglich, Elemente finden in dem Schatten DOM mit Python-Selen?Zugriff auf Elemente im Schatten DOM
Beispiel Anwendungsfall:
Ich habe diese input
mit type="date"
:
<input type="date">
Und ich möchte der Datumsauswahl-Taste auf der rechten Seite klicken und wählen Sie ein Datum aus dem Kalender.
Wenn Sie das Element in Chrome Developer Tools überprüfen würde und die Schatten-Wurzelknoten des Datumseingabe erweitern, würden Sie sehen, die Taste erscheint als:
<div pseudo="-webkit-calendar-picker-indicator" id="picker"></div>
Screenshot zeigt, wie es in Chrome aussieht:
die "Picker" -Schaltfläche von id Ergebnisse zu finden, in NoSuchElementException
:
>>> date_input = driver.find_element_by_name('bday')
>>> date_input.find_element_by_id('picker')
...
selenium.common.exceptions.NoSuchElementException: Message: no such element
Ich habe auch versucht ::shadow
und /deep/
Locators zu verwenden, wie here vorgeschlagen:
>>> 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
Bitte beachte, dass ich das Datum in der Eingabe durch das Senden Tasten, um es ändern:
driver.find_element_by_name('bday').send_keys('01/11/2014')
Aber will ich das Datum speziell setzen, indem sie aus einem Kalender auswählen.
Sie die letzte Version von ChromeDriver verwenden? Chromedriver unterstützt Shadow DOM seit v2.14 (2015-01-28). –
@ f.cipriani ja, die neueste (2.14). Vielen Dank. – alecxe
Haben Sie ein _funktionelles_ Beispiel für den Anwendungsfall? – SiKing