简体   繁体   中英

Unable to find element and input value using selenium

My objective is to take a value (in my case a shipment tracking #) and input it into a tracking field on a website using selenium. I am unable to input the value and get the following error message:

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

chromedriver = "/Users/GUVA/Downloads/chromedriver"
driver = webdriver.Chrome(chromedriver)
driver.get("https://www.17track.net/en")

#data = df.values[1] # grabbing one tracking number from an excel file

# click "agree" to close window
python_button = driver.find_elements_by_xpath('//*[@id="modal-gdpr"]/div/div/div[3]/button')[0]
python_button.click()

# enter tracking number into text box
que=driver.find_element_by_id('//input[@id="jsTrackBox"]')
que.send_keys("data")

Traceback (most recent call last):
File "/Users/GUVA/PycharmProjects/Shipment_Tracking/Track Shipment.py", line 26, in <module>
que=driver.find_element_by_id('//input[@id="jsTrackBox"]')
File "/Users/GUVA/PycharmProjects/Shipment_Tracking/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "/Users/GUVA/PycharmProjects/Shipment_Tracking/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "/Users/GUVA/PycharmProjects/Shipment_Tracking/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/Users/GUVA/PycharmProjects/Shipment_Tracking/venv/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified
(Session info: chrome=83.0.4103.61)

Any suggestions please?

//input[@id="jsTrackBox"] is an xpath. So you need to fetch the element by using find_element_by_xpath method(where you are currently using find_element_by_id method).

Your code should be like:

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

chromedriver = "/Users/GUVA/Downloads/chromedriver"
driver = webdriver.Chrome(chromedriver)
driver.get("https://www.17track.net/en")

#data = df.values[1] # grabbing one tracking number from an excel file

# click "agree" to close window
python_button = driver.find_elements_by_xpath('//*[@id="modal-gdpr"]/div/div/div[3]/button')[0]
python_button.click()

# enter tracking number into text box
que=driver.find_element_by_xpath("//div[@id='jsTrackBox']//div[@class='CodeMirror-scroll']")
que.click()
que.send_keys("data")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM