我正在使用 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)
Run Code Online (Sandbox Code Playgroud)
问题是 selenium 驱动程序找不到要将密钥发送到的 textarea。我认为它能够清除它(因为当您进入页面时我可以从字面上看到文本被清除)但无法输入任何文本。有人会对此有什么想法吗?我遵循了在线指南,但我觉得我已经尝试了列出的所有选项(http://selenium-python.readthedocs.org/)。谢谢。
您可以明确等待直到 textarea 出现。
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)
Run Code Online (Sandbox Code Playgroud)