How to find element using type in Selenium and Python


I have the below html code.

<div align="center">
    <input type="file" name="filePath"><br>
    <input type="Submit" value="Upload File"><br>

I am trying to find the two elements “file” and “submit” using Selenium with Python. Below is the code I have tried to use.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# create a new Firefox session
driver = webdriver.Chrome()

# Maximize the browser window

# Enter the url to load
driver.get("<<MY PAGE TO LOAD>>")

# Wait for the page to load

# find the upload file type and pass a test value
upload_field = driver.find_element_by_partial_link_text('file')

When I run this code, I am able to load the page successfully in the Chrome browser but I get the below exception.

# Exception when trying to get element by type
Traceback (most recent call last):
  File "", line 33, in <module>
    upload_field = driver.find_element_by_partial_link_text('file')
  File "", line 453, in find_element_by_partial_link_text
    return self.find_element(by=By.PARTIAL_LINK_TEXT, value=link_text)
  File "", line 955, in find_element
    'value': value})['value']
  File "", line 312, in execute
  File "", 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)

I looked at the solution provided here but this too is throwing an error. I am currently using Python 3.6.4 x64 with Selenium 3.8.1. My OS is Windows 7 x64 bit. How can I get elements with ‘type’ in html?

Asked By: Code_Sipra



Checkout the docs on finding elements. I find xpaths or css selectors particularly powerful because they are extremely generalizable.


upload_field = driver.find_element_by_xpath("//input[@type='file']")

css selector

upload_field = driver.find_element_by_css_selector("input[name='filePath'][type='file']")
Answered By: Alex

find_element_by_partial_link_text looks for the element text. In addition, it works only on <a> tags. For example, driver.find_element_by_partial_link_text('file') will match the following html

<a type="file" name="filePath">file</a>

But not your html as the element has no text.

You could locate the element by the name attribute instead

Answered By: Guy

Its not the proper way to use the partial text in selenium .
Please go through the link to understand how to use partial link

Answer to your question.
Use the other attribute like name to identify the locator.

Otherwise try this locator “//input[@name=’filePath’]”

Answered By: Pradeep hebbar

Method driver.find_element_by_css_selector is now deprecated in selenium >=4.3.0


Selenium 4.3.0

  • Deprecated find_element_by_* and find_elements_by_* are now removed (#10712)

New method is:

driver.find_element('xpath', '//button[text()="Some text"]')


Answered By: Reda E.