Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Selenium+Python нахожу элемент, input, но не могу ввести туда значение. Может кто сталкивался с аналогичной проблемой?

webdriver
selenium
python
Теги: #<Tag:0x00007fedc41883a0> #<Tag:0x00007fedc41881c0> #<Tag:0x00007fedc7a53e00>

(Dmitriy Chernishov) #1

Проблема заключается в следующем: есть блок, на блоке кнопка, по нажатию на которую, появляется INPUT, который в свою очередь принимает только целые значения (int).
Получилось найти данное поле по XPath, но не получается ввести данные.

Код
Selenium+Python
self.driver.find_element(By.CLASS_NAME, “btn-primary”).click()
self.driver.find_element(By.ID, “qcn-buy”).click()
self.driver.find_element(By.ID, “qcn-buy”).send_keys(“10”)
Часть кода HTML

Логи и ошибка вот такая …
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot focus element
Примечание: self.driver.find_element(By.ID, “qcn-buy”).click() отрабатывает, а вот ввод 10 - нет.
Версии ОС и софта следующие …
Ubuntu 16.04 Chrome 66


(Yaroslav Pernerovskyy) #2

а попробуйте то же самое, но с помощью actions


(Богдан Ткаченко) #3

попробуй поставить ожидание элемента


(Dmitriy Chernishov) #4

Добрый день. Спасибо за наводку, сейчас погуглю. (я с этих выходных только начал осваивать автоматизацию Python+Selenium).


(Dmitriy Chernishov) #5

Добрый день. А с какой целью ставить ожидание элемента? Find and click по элементу отрабатывает, а ввод значений - нет.


(Богдан Ткаченко) #6

а по этому id у вас только 1 элемент находится?


(Dmitriy Chernishov) #7
В коде нету ID элемента, а в XPath - **//*[@id="qcn-buy"]/form/div/input** - есть, я по нему и искал. Тесты запускаю на https://crossbrowsertesting.com через готовые Api. Там есть возможность онлайн просмотра видео теста, на котором видно, как код отрабатывает (вход в учетную запись, нахождение элемента, нахождение кнопки и клика по ней, нахождение INPUT и клика по нему и на этом все.)

(Богдан Ткаченко) #8

Так вы же ищите элемент по id, а потом сами скидываете xpath по которому вы не ищите, ищите элемент по вашему xpath //*[@id=“qcn-buy”]/form/div/input, а не по id “qcn-buy”.


(Dmitriy Chernishov) #9

Я думаю тут ошибка не “путях”
self.driver.find_element(By.ID, “qcn-buy”).click() - работает, находит и кликает в поле
self.driver.find_element(By.ID, “qcn-buy”).send_keys(“10”) закоментили строку
Раскоментировали
self.driver.find_element(By.ID, “qcn-buy”).click()
self.driver.find_element(By.ID, “qcn-buy”).send_keys(“10”) - Message: unknown error: cannot focus element


(Богдан Ткаченко) #10

А вы понимаете разницу между поиском по ID и поиском по XPATH в конкретно в вашем случае? В вашем случае вы пытаетесь ввести цифры не в input, а вообще непонятно куда. Да у вас находит элемент по id но это не тот элемент который вам нужен, нужный элемент находится по xpath который вы написали выше. Возмите и почитайте как ищутся элементы, что такое DOM, и какие методы есть для поиска элементов на странице и разница между ними.


(Dmitriy Chernishov) #11

Спасибо за конструктивную критику))) нашел решение!
self.driver.find_element_by_xpath("//*[@id=‘qcn-buy’]/form/div/input").send_keys(“100”)

Когда я в прошлых попытках пытался ввести значения по XPath PyCharm ругался на то, что ("//*[@id=“qcn-buy”]/form/div/input"). Поменял просто кавычки и все заработало. Ажстыдно)