(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