Отправка текста в текстовое поле с помощью Selenium в Python - PullRequest
1 голос
/ 19 апреля 2020

Я пытаюсь создать скрипт в Python, используя Selenium, чтобы открыть страницу в социальной сети (Tumblr), ввести учетные данные для входа в систему и создавать «цитаты» постов с помощью генератора случайных предложений. Я могу ввести учетные данные и выбрать значок создания сообщения с помощью xpaths (driver.find_element_by_xpath) с веб-сайта, но при попытке ввода текста для сообщения с xpath

//*[@id="redpop_iframePostForms"]/div[3]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div[3]/div[1]/div/div[1]/p

с помощью

self.driver.find_element_by_xpath('//*[@id="redpop_iframePostForms"]/div[3]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div[3]/div[1]/div/div[1]/p').send_keys("It worked!!")

Я получаю сообщение об ошибке

Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@id="redpop_iframePostForms"]/div[3]/div/div/div/div/div[2]/div[2]/div/div[2]/div/div[1]/div/div/div[1]"}

Я пытался использовать другие классы div в списке div, но не могу найти правильный. Я также пытался использовать селектор CSS с кодом

driver.find_elements_by_css_seletor("div[@aria-label='Quote']").send_keys("It worked!!!")

, но это приводило к ошибке

Message: invalid selector: An invalid or illegal selector was specified

Любое направление, куда go отсюда?

Спасибо!

1 Ответ

1 голос
/ 19 апреля 2020

Для таких исключений нет элементов

Из вашего xpath я могу догадаться, что элемент присутствует в iframe. Сначала переключитесь на этот кадр, а затем найдите элемент, с которым вы хотите взаимодействовать.

Для недопустимого сообщения селектора

Общий синтаксис для определения местоположения элемента с селектором css:

tagname[attributeName=‘attributeValue’]

Вам не нужно использовать @ с атрибутом Name. Кроме того, вы извлекаете все элементы div, присутствующие в DOM, с помощью aria-label = 'Quote' и отправляете ключи, что неправильно. Если вы хотите выполнить какое-либо действие с элементами, вам нужно поместить их в список, а затем выполнить итерацию по нему. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...