【问题标题】:How to send text to the textarea as per the html through Selenium and Python如何通过 Selenium 和 Python 根据 html 将文本发送到 textarea
【发布时间】:2018-09-05 18:11:01
【问题描述】:

我想在文本框中单击并发送文本,但找不到元素。

这是我要点击并发送文本的html-

<form class="addComment expand" data-id="9656414">
<img 
src="https://ctl.s6img.com/society6/img/g2taHIrokQ01R_67jS8ulaWI2wk/h_150,w_150/users/avatar/~artwork/s6-original-art-uploads/society6/uploads/u/sul97/avatar_asset/d837ee10016843a3bba9ae3310cc338d" width="25" height="25">
                                <textarea placeholder="Add a comment..." data-button="9656414"></textarea>
                                <button id="b9656414">Comment</button>
                            </form>

我的代码:-

driver.find_element_by_class_name('add').click()
comments = driver.find_element_by_xpath("/html/body/form[2]")
comments.click()
comments.send_keys("Awesome Art")

我可以点击但不能在上面输入文字。我做错了什么?

【问题讨论】:

  • 你想在 textarea 上发送文本吗?
  • 为什么要点击textarea?重点是什么?您是否需要单击某些内容以使用 textarea 展开表单?描述您希望脚本执行的操作顺序

标签: python selenium xpath css-selectors webdriver


【解决方案1】:

如果你想在文本区输入文字,你需要找到文本区:

driver.find_element_by_xpath("//textarea[@data-button='9656414']")

【讨论】:

    【解决方案2】:

    根据 HTML,您共享所需的元素是 React 元素,因此您必须诱导 WebDriverWait 以使 元素可点击 em>,您可以使用以下任一解决方案:

    • CSS_SELECTOR:

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "form.addComment.expand textarea[placeholder^='Add a comment']"))).send_keys("Awesome Art")
      
    • XPATH:

      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//form[@class='addComment expand']//textarea[contains(@placeholder,'Add a comment')]"))).send_keys("Awesome Art")
      

    注意:您必须添加以下导入:

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

    【讨论】:

    • XPath 有效!但是你也可以显示点击按钮的路径吗?
    【解决方案3】:

    您正在尝试单击并将文本发送到 form 本身,而不是 textarea。在这里,您如何在 form 中找到 textarea 和按钮。

    driver.find_element_by_css_selector("form[class='addComment expand'] textarea").send_keys("Awesome Art")
    driver.find_element_by_css_selector("form[class='addComment expand'] button").click()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-12
      • 2019-07-15
      • 2021-11-12
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多