특정 필드의 텍스트가 유효하지 않을 때 적절한 오류 메시지가 나타나는지 확인하는 테스트가 있습니다. 유효성 검사 중 하나는 특정 textarea 요소가 비어 있지 않은 것입니다.
이 텍스트 영역에 이미 텍스트가있는 경우 셀레늄에 필드를 지우도록 지시하려면 어떻게해야합니까?
같은 :
driver.get_element_by_id('foo').clear_field()
답변
driver.find_element_by_id('foo').clear()
답변
당신이 사용할 수있는
webElement.clear();
이 요소가 텍스트 입력 요소이면 값이 지워집니다.
이 이벤트에서 발생한 이벤트는 예상과 다를 수 있습니다. 특히 키보드 나 마우스 이벤트는 발생하지 않습니다. 키보드 이벤트가 발생하도록하려면 다음과 같은 것을 사용하십시오 sendKeys(CharSequence)
. 예 :
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
또는:
webElement.sendKeys(Keys.CONTROL + "a");
webElement.sendKeys(Keys.DELETE);
답변
.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);
답변
최신 셀레늄 버전에서 다음을 사용하십시오.
driver.find_element_by_id('foo').clear()
답변
자바
driver.findelement(By.id('foo').clear();
또는
webElement.clear();
이 요소가 텍스트 입력 요소이면 값이 지워집니다.
답변
일반적인 구문입니다
driver.find_element_by_id('Locator value').clear();
driver.find_element_by_name('Locator value').clear();
답변
간단한 clear () 호출을 사용하면 DOM에서 해당 입력 / 텍스트 영역 구성 요소에 여전히 이전 값이있는 것으로 표시되므로 해당 구성 요소에 대한 다음 변경 사항 (예 : 구성 요소를 새 값으로 채움)은 제 시간에 처리되지 않습니다.
셀레늄 소스 코드를 보면 clear ()-method가 다음 주석과 함께 문서화되어 있음을 알 수 있습니다.
/ **이 요소가 텍스트 입력 요소이면 값이 지워집니다. 다른 요소에는 영향을 미치지 않습니다. 텍스트 입력 요소는 INPUT 및 TEXTAREA 요소입니다. 이 이벤트에서 발생한 이벤트는 예상과 다를 수 있습니다. 특히 키보드 나 마우스 이벤트는 발생하지 않습니다. 키보드 이벤트가 발생하도록하려면 백 스페이스 키와 함께 {@link #sendKeys (CharSequence …)}와 같은 것을 사용하십시오. 변경 이벤트를 받으려면 탭 키를 사용하여 {@link #sendKeys (CharSequence …)}를 호출하여 다음을 고려하십시오. * /
따라서이 유용한 힌트를 사용하여 입력 / 텍스트 영역 (이미 값이있는 구성 요소)을 지우고 새 값을 할당하면 다음과 같은 코드가 나타납니다.
public void waitAndClearFollowedByKeys(By by, CharSequence keys) {
LOG.debug("clearing element");
wait(by, true).clear();
sendKeys(by, Keys.BACK_SPACE.toString() + keys);
}
public void sendKeys(By by, CharSequence keysToSend) {
WebElement webElement = wait(by, true);
LOG.info("sending keys '{}' to {}", escapeProperly(keysToSend), by);
webElement.sendKeys(keysToSend);
LOG.info("keys sent");
}
private String escapeProperly(CharSequence keysToSend) {
String result = "" + keysToSend;
result = result.replace(Keys.TAB, "\\t");
result = result.replace(Keys.ENTER, "\\n");
result = result.replace(Keys.RETURN, "\\r");
return result;
}
이 코드는 Python이 아닌 Java 인 것이 유감입니다. 또한이 게시물을 너무 오래 만들 수있는 추가 “waitUntilPageIsReady ()-방법을 생략해야했습니다.
이것이 셀레늄으로 여행하는 데 도움이되기를 바랍니다!