(au moins)
Si l'affichage de la balise ʻinput est ʻaucun, le fichier ne peut pas être défini correctement.
Donc, avant de spécifier le fichier, cela fonctionne bien si vous jouez avec le style et le visualisez.
driver.execute_script("document.getElementsByName('datafile')[0].style.display = '';")
Ne vous inquiétez pas s'il ne s'agit pas d'une série 3 ou d'un Chrome sans tête.
Le site de vérification est
[<INPUT type =" file "> -HTML balise référence]
J'utiliserai ʻinput` de.
Mec qui réussit
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()
Celui qui échoue
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()
Dans cet exemple, quelque chose qui fonctionne normalement est intentionnellement empêché de bouger.
Par contre, si quelque chose échoue = style.display = 'none', vous devez le supprimer.
driver.execute_script("document.getElementsByName('datafile')[0].style.display = '';")
Le site que j'ai rencontré faisait un bouton avec un div contenant une entrée cachée. Cela fonctionnait bien à la fois manuellement et dans Selenium IDE, il a donc fallu beaucoup de temps pour identifier le problème ...
Recommended Posts