用Selenium清空文本区域内容

208 投票
18 回答
385243 浏览
提问于 2025-04-17 04:07

我有一些测试,主要是检查当某些字段里的文本不合法时,是否会出现正确的错误信息。其中一个检查就是确保某个文本区域(textarea)不是空的。

如果这个文本区域里已经有内容了,我该怎么告诉Selenium把里面的内容清空呢?

可以用类似下面的方式:

driver.get_element_by_id('foo').clear_field()

18 个回答

33

我遇到了一个情况,在这个字段中,.clear() 方法没有效果。结合前两个答案中的方法,我成功解决了这个字段的问题。

from selenium.webdriver.common.keys import Keys

#...your code (I was using python 3)

driver.find_element_by_id('foo').send_keys(Keys.CONTROL + "a")
driver.find_element_by_id('foo').send_keys(Keys.DELETE)
146

选项 a)

如果你想确保键盘事件能够被触发,可以考虑使用 sendKeys(CharSequence) 这个方法。

示例 1:

 from selenium.webdriver.common.keys import Keys
 # ...
 webElement.sendKeys(Keys.CONTROL + "a")
 webElement.sendKeys(Keys.DELETE)

示例 2:

 from selenium.webdriver.common.keys import Keys
 # ...
 webElement.sendKeys(Keys.BACK_SPACE)  //do repeatedly, e.g. in while loop

WebElement

获取所需的 WebElement 有很多种方法,比如:

  • driver.find_element_by_id
  • driver.find_element_by_xpath
  • driver.find_element

选项 b)

 webElement.clear()

如果这个元素是一个文本输入框,这个操作会清空里面的内容。

需要注意的是,这个操作触发的事件可能和你预期的不同。特别是,我们不会触发任何键盘或鼠标事件。

300
driver.find_element_by_id('foo').clear()

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。

撰写回答