Невозможно найти элемент и входное значение с помощью селена - PullRequest
0 голосов
/ 28 мая 2020

Моя цель - взять значение (в моем случае номер отслеживания отгрузки) и ввести его в поле отслеживания на веб-сайте, используя селен. Я не могу ввести значение и получаю следующее сообщение об ошибке:

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)

Есть предложения, пожалуйста?

1 Ответ

1 голос
/ 28 мая 2020

//input[@id="jsTrackBox"] - это xpath. Таким образом, вам нужно получить элемент с помощью метода find_element_by_xpath (где вы в настоящее время используете метод find_element_by_id).

Ваш код должен быть таким:

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")
...