web-dev-qa-db-fra.com

Comment trouver un élément en utilisant du type dans Selenium et Python

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?

4
Code_Sipra

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']" "

1
Pradeep hebbar