用Selenium清空文本区域内容
我有一些测试,主要是检查当某些字段里的文本不合法时,是否会出现正确的错误信息。其中一个检查就是确保某个文本区域(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()
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。