Найдите элемент и отправьте ключи с помощью Selenium python (комментарии блога) - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу сделать комментарий в блоге с Selenium, chromedriver и python.

Я пробовал все, но не могу найти правильный XPATH для комментария textarea: https://testeblogger6.blogspot.com/2020/04/comment.html

Похоже, что окно комментария Google - это другой фрейм. Я попытался:

textarea=driver.find_element_by_xpath('//*[@id="commentBodyField"]')

, а также

textarea=driver.find_element_by_xpath('/html/body/div/form/div[1]/div[2]/textarea')

Но всегда это приводит к: "нет такого элемента: невозможно найти элемент"

Пожалуйста, кто-нибудь, дайте мне правильный xpath или ID для комментария textarea этого блога, для отправки ключей!

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Попробуйте следующий код:

driver.get('https://testeblogger6.blogspot.com/2020/04/comment.html')
iframe = WebDriverWait(driver, 20).until(
      EC.presence_of_element_located((By.NAME, 'comment-editor')))
driver.switch_to.frame(iframe)


element=WebDriverWait(driver, 20).until(
     EC.presence_of_element_located((By.NAME, 'commentBody')))

actionChains = ActionChains(driver)
actionChains.move_to_element(element).click().perform()
actionChains.move_to_element(element).send_keys("aaaaa").perform()

Примечание: , пожалуйста, добавьте ниже импорта в ваше решение

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains

Выход:

enter image description here

0 голосов
/ 21 апреля 2020

Исходя из того, что я увидел, вы должны выполнить:

  • сначала щелкните элемент
  • , затем отправьте текст

текстовая область может находиться по id: commentBodyField

textarea = driver.find_element_by_id('commentBodyField')
textarea.click()
textarea.clear()
textarea.send_keys(text)

, если щелчок не удастся для текстовой области, попробуйте нажать на оболочку

textareawrap = driver.find_elements_by_css_selector('.commentBodyContainer')
textareawrap.click()
<send text method after that>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...