Невозможно найти элемент с помощью xPath
Я буквально схожу с ума, чтобы найти элемент на определенной веб-странице. Это кнопка "Ввод", но я не могу ее найти.
СООБЩЕНИЕ ОБ ОШИБКЕ:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"input"}
(Информация о сеансе: chrome=86.0.4240.111)
Я поделюсь с вами возможными селекторами ChroPath Extension:
HTML ПРОВЕРИТЬ КОД КНОПКА "ВВОД":
<input type="button" value="Entra" onclick="parent.location.href='http://maremt.risorse.enel'">
1° ПОПЫТКА - КОД PYTHON С REL XPATH:
elem = browser.find_element_by_xpath('//body[1]/div[1]/div[1]/div[2]/div[1]/table[1]/tbody[1]/tr[1]/td[2]/table[1]/tbody[1]/tr[3]/td[1]/input[1]')
2° ПОПЫТКА - КОД PYTHON С ABS XPATH:
elem = browser.find_element_by_xpath('/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/table[1]/tbody[1]/tr[1]/td[2]/table[1]/tbody[1]/tr[3]/td[1]/input[1]')
Я проверил, были ли фреймы, но не могу их найти. Пожалуйста, помогите мне.
3 ответа
Я согласен с @josifoski. Лучше использовать пользовательский xpath, чем автоматически сгенерированный браузером. Итак, в вашем случае попробуйте использовать следующий xpath:xpath = '//input[@type="button"][@value="Entra"]'
Так будет легче понять и поддержать.
Я понял.
Я был неправ, когда сказал вам, что в исходном коде нет iframe.
Их 2!
Итак, это правильный код для нажатия кнопки "Ввод":
browser.switch_to.frame(0)
browser.switch_to.frame(1)
elem = browser.find_element_by_css_selector('td:nth-child(2) input')
elem.click()
Чтобы понять, я записал свои шаги с помощью Selenium Ide для браузера Chrome, затем экспортировал исходный код python и увидел 2 функции switch_to.frame; потом я сделал 2 плюс 2...
Как вы можете видеть, в конце я использовал аргумент css_selector на основе записанного исходного кода, который я экспортировал.
Надеюсь, это понятно и полезно для других.
Большое спасибо за вашу помощь и извините за неполную информацию.