(wenigstens) Wenn die "Anzeige" des "Eingabe" -Tags "Keine" ist, kann die Datei nicht richtig eingestellt werden.
Bevor Sie die Datei angeben, funktioniert sie gut, wenn Sie mit dem Stil spielen und ihn visualisieren.
driver.execute_script("document.getElementsByName('datafile')[0].style.display = '';")
Machen Sie sich keine Sorgen, wenn es sich nicht um einen 3er oder Headless Chrome handelt.
Die Verifizierungsstelle ist
<INPUT type =" file ">
-HTML-Tag-Referenz
Ich werde den "Eingang" von verwenden.
Erfolgreicher Typ
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
if __name__ == '__main__':
try:
driver = webdriver.PhantomJS()
driver.get('http://www.htmq.com/html/input_file.shtml')
elm = driver.find_element_by_name("datafile")
print('get')
elm.send_keys('./test.jpg')
print('send')
except TimeoutException as e:
print(e)
finally:
driver.quit()
Derjenige, der versagt
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
if __name__ == '__main__':
try:
driver = webdriver.PhantomJS()
driver.get('http://www.htmq.com/html/input_file.shtml')
# new!
driver.execute_script("document.getElementsByName('datafile')[0].style.display = 'none';")
elm = driver.find_element_by_name("datafile")
print('get')
elm.send_keys('./test.jpg')
print('send')
except TimeoutException as e:
print(e)
finally:
driver.quit()
In diesem Beispiel wird absichtlich verhindert, dass sich etwas, das normal funktioniert, bewegt.
Wenn andererseits etwas fehlschlägt = style.display = 'none'
, müssen Sie es entfernen.
driver.execute_script("document.getElementsByName('datafile')[0].style.display = '';")
Die Site, auf die ich gestoßen bin, hat eine Schaltfläche mit einem Div erstellt, das eine versteckte Eingabe enthält. Es hat sowohl manuell als auch in der Selenium-IDE einwandfrei funktioniert, daher hat es viel Zeit gekostet, das Problem zu identifizieren ...
Recommended Posts