2011-10-11 59 views
85

我有一些測試,我在檢查某些字段中的文本無效時出現正確的錯誤消息。檢查有效性是某個textarea元素不是空的。從textarea用硒清除文本

如果這個textarea已經有文字了,我該如何告訴selenium清除該字段?

類似:

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

我發現它,RTFSourceCode :) driver.get_element_by_id('foo')。clear() – Isaac

回答

118
driver.find_element_by_id('foo').clear() 
+2

這在最近的Selenium版本中對我無效。 –

+0

youp chromedriver也打破這一個。 Fenix答案無處不在 –

+1

這可能是一個與硒和chromedriver版本衝突的問題。開發人員似乎不太可能會謹慎地從chromedriver中刪除此功能。 – Isaac

11

在最近的硒版本,使用:

driver.find_element_by_id('foo').clear() 
+0

.clear( )在這裏是重要的部分,但很好的捕獲:) – Isaac

+0

其他答案在我的後面編輯;)@ whackamadoodle3000 –

30

您可以使用

webElement.clear(); 

JavaDoc

如果此元素是文本輸入元素,則會清除該值。

請注意,此事件引發的事件可能與您預期的不同。特別是,我們不會觸發任何鍵盤或鼠標事件。如果你想確保鍵盤事件被觸發,請考慮使用類似sendKeys(CharSequence)的東西。例如: -

WebElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop 

或:

webElement.sendKeys(Keys.CONTROL + "a"); 
WebElement.sendKeys(Keys.DELETE); 
+0

當使用CTRL +'a'考慮在MacOS(其他鍵盤快捷鍵)上運行測試時的情況。順便說一句 - 好的建議,解決了我的問題。 –

1

這是一般語法

driver.find_element_by_id('Locator value').clear(); 
driver.find_element_by_name('Locator value').clear(); 
0

爲Java

driver.findelement(By.id('foo').clear(); 

webElement.clear(); 

如果此元素是文本輸入元素,則會清除該值。