我正在使用 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/