Python selenium 将键发送到文本区域

标签 python selenium

我正在使用 Python 3.4.4 访问具有文本区域的网站 ( https://readability-score.com/ ),该文本区域会在添加新值时动态更新。

我正在尝试将字符串输入该文本框,但它对我不起作用。

这是我正在尝试的代码:

driver = webdriver.Firefox()
driver.wait = WebDriverWait(driver, 2)
URL = "https://readability-score.com/"

text = "Hello hello hello, this is a test"

driver.get(URL)
time.sleep(2)
driver.find_element_by_id("text_to_score").clear()
driver.find_element_by_id("text_to_score").send_keys(text)
#driver.find_element_by_xpath("/html/body/div[1]/div[6]/div/div[1]/form/fieldset/textarea").clear()
#driver.find_element_by_xpath("/html/body/div[1]/div[6]/div/div[1]/form/fieldset/textarea").send_keys(text)

问题是 selenium 驱动程序找不到要将键发送到的文本区域。我认为它能够清除它(因为当您进入页面时我可以从字面上看到文本被清除)但是无法输入任何文本。有人对此有想法吗?我遵循了在线指南,但我觉得我已经尝试了列出的所有选项 ( http://selenium-python.readthedocs.org/)。谢谢。

最佳答案

You can explicitly wait直到文本区域出现。

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


...


url = "https://readability-score.com/"
text = "Hello hello hello, this is a test"

driver.get(url)
WebDriverWait(driver, 5).until(
    EC.presence_of_element_located((By.ID, "text_to_score"))
)  # Wait until the `text_to_score` element appear (up to 5 seconds)
driver.find_element_by_id("text_to_score").clear()
driver.find_element_by_id('text_to_score').send_keys(text)

关于Python selenium 将键发送到文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36614118/

相关文章:

python - 使用 python 删除空行和空 [ ]

python - 我们可以在 REST API 上设置条件吗

python - 使unittest.mock.Mock()返回字典列表

python - 将 PNG 图像编码为 Base64 时出现 AttributeError

python - 没有名为 'socks' 的模块

python - 如何使用selenium从下拉菜单中随机选择?

java - 如何使用 java 单击按钮停止 selenium 服务器?

c# - 使用 XPath 和 C# 选择 HTML 表格的下拉选项

java - WebDriver 和 ChromeDriver : Unable to fix org/json/JSONException error

javascript - 使用 Selenium 或 HTMLUNIT 的 HttpClient?