如何使用Selenium和Python在textarea中使用发送_键

2024-06-25 23:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在现场发送评论。它适用于“输入”,但不适用于“文本区域”。必须有人来处理这件事

在单击Html元素之前,它看起来像:

<textarea class = '1' aria-label="Add a comment..." placeholder="Add a comment..."autocomplete="off"  autocorrect="off"> </textarea>

然后:

<textarea class = '1 focus-visible' aria-label="Add a comment..." placeholder="Add a comment..."autocomplete="off"  autocorrect="off" style="height: 18px;"  data-focus-visible-added = ""> </textarea>

textarea字段已激活,但未添加任何注释

browser.find_element_by_css_selector('textarea[placeholder="Add a comment..."]').send_keys('comment')

Tags: 文本addcomment评论autocomplete现场labelplaceholder
2条回答

要将字符序列发送到文本区域,必须为element_to_be_clickable()引入WebDriverWait,并且可以使用以下Locator Strategies之一:

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "textarea.1[aria-label^='Add a comment'][placeholder^='Add a comment']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "textarea.1.focus-visible[aria-label^='Add a comment'][placeholder^='Add a comment'][data-focus-visible-added]"))).send_keys("Алекс")
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//textarea[starts-with(@aria-label, 'Add a comment') and starts-with(@placeholder, 'Add a comment')][@class='1']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//textarea[starts-with(@aria-label, 'Add a comment') and starts-with(@placeholder, 'Add a comment')][@class='1 focus-visible' and @data-focus-visible-added]"))).send_keys("Алекс")
    
  • 注意:您必须添加以下导入:

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

我不知道你是什么意思,但对我来说,这段代码工作得非常好

class Bot():
    def __init__(self):
       self.driver = webdriver.Chrome()
    def comment(self):
       self.driver.get(url)
       self.driver.find_element_by_css_selector('textarea[placeholder="Add a comment..."]').send_keys('comment')

bot = Bot()
bot.comment()

它在我的网页上的以下元素中写入:

<textarea class = '1' aria-label="Add a comment..." placeholder="Add a comment..."autocomplete="off"  autocorrect="off"> </textarea>

相关问题 更多 >