J'ai le code html ci-dessous.
<div align="center">
<input type="file" name="filePath"><br>
<input type="Submit" value="Upload File"><br>
</div>
J'essaie de trouver les deux éléments "fichier" et "soumettre" en utilisant Selenium avec Python. Voici le code que j'ai essayé d'utiliser.
from Selenium import webdriver
from Selenium.webdriver.common.keys import Keys
# create a new Firefox session
driver = webdriver.Chrome()
# Maximize the browser window
driver.maximize_window()
# Enter the url to load
driver.get("<<MY PAGE TO LOAD>>")
# Wait for the page to load
driver.implicitly_wait(5)
# find the upload file type and pass a test value
upload_field = driver.find_element_by_partial_link_text('file')
upload_field.clear()
upload_field.send_keys("test")
Lorsque j'exécute ce code, je peux charger la page avec succès dans le navigateur Chrome mais j'obtiens l'exception ci-dessous.
# Exception when trying to get element by type
Traceback (most recent call last):
File "C:\Users\TEST\Desktop\Test.py", line 33, in <module>
upload_field = driver.find_element_by_partial_link_text('file')
File "C:\Python\Python36\lib\site-packages\Selenium\webdriver\remote\webdriver.py", line 453, in find_element_by_partial_link_text
return self.find_element(by=By.PARTIAL_LINK_TEXT, value=link_text)
File "C:\Python\Python36\lib\site-packages\Selenium\webdriver\remote\webdriver.py", line 955, in find_element
'value': value})['value']
File "C:\Python\Python36\lib\site-packages\Selenium\webdriver\remote\webdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "C:\Python\Python36\lib\site-packages\Selenium\webdriver\remote\errorhandler.py", line 237, in check_response
raise exception_class(message, screen, stacktrace)
Selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"partial link text","selector":"file"}
(Session info: chrome=63.0.3239.132)
(Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.14393 x86_64)
J'ai regardé la solution fournie ici mais cela aussi génère une erreur. J'utilise actuellement Python 3.6.4 x64 avec Selenium 3.8.1. Mon système d'exploitation est Windows 7 x64 bits. Comment puis-je obtenir des éléments avec "type" en html?
Ce n'est pas la bonne façon d'utiliser le partial text en sélénium. Veuillez parcourir le lien pour comprendre comment utiliser le lien partiel https://www.softwaretestingmaterial.com/how-to-locate-element-by-link-text-and-partial-link-text-locator/
Répondez à votre question. Utilisez l'autre attribut comme nom pour identifier le localisateur.
Sinon, essayez ce localisateur "// input [@ name = 'filePath']" "