Selenium에서 키를 입력하고 Enter 또는 Return 키를 빠르게 사용할 수있는 방법을 찾고 있습니다. 불행히도 테스트하려는 양식 (내 코드가 아니므로 수정할 수 없음)에는 제출 버튼이 없습니다. 수동으로 작업 할 때 ENTER또는을 입력하십시오 RETURN. type
클릭 버튼이 없으므로 Selenium 명령으로 수행하는 방법을 알아야합니다 .
Selenium에서 키를 입력하고 Enter 또는 Return 키를 빠르게 사용할 수있는 방법을 찾고 있습니다. 불행히도 테스트하려는 양식 (내 코드가 아니므로 수정할 수 없음)에는 제출 버튼이 없습니다. 수동으로 작업 할 때 ENTER또는을 입력하십시오 RETURN. type
클릭 버튼이 없으므로 Selenium 명령으로 수행하는 방법을 알아야합니다 .
답변:
import org.openqa.selenium.Keys
WebElement.sendKeys(Keys.RETURN);
이 import
문장은 Java 용이며 다른 언어의 경우 파이썬과 같이 다를 수 있습니다.from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.keys import Keys
( stackoverflow.com/questions/5503489/… )
org.openqa.selenium.Keys
RETURN = '\ue006'
ENTER = '\ue007'
. 그런데 왜? 일부 유물 또는 OS 차이점.
driver.findElement(By.id("Value")).sendKeys(Keys.RETURN);
또는,
driver.findElement(By.id("Value")).sendKeys(Keys.ENTER);
from selenium.webdriver.common.keys import Keys
driver.find_element_by_name("Value").send_keys(Keys.RETURN)
또는,
driver.find_element_by_name("Value").send_keys(Keys.ENTER)
또는,
element = driver.find_element_by_id("Value")
element.send_keys("keysToSend")
element.submit()
element = @driver.find_element(:name, "value")
element.send_keys "keysToSend"
element.submit
또는,
element = @driver.find_element(:name, "value")
element.send_keys "keysToSend"
element.send_keys:return
또는,
@driver.action.send_keys(:enter).perform
@driver.action.send_keys(:return).perform
driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);
또는,
driver.FindElement(By.Id("Value")).SendKeys(Keys.Enter);
이제 Selenium 2가 릴리스되었으므로 Enter 키를 전송하는 것이 더 쉽습니다 send_keys
. selenium.webdriver.remote.webelement.WebElement
클래스 의 메소드로 수행 할 수 있기 때문입니다 (이 예제 코드는 Python이지만 Java에는 동일한 메소드가 있습니다).
>>> from selenium import webdriver
>>> wd = webdriver.Firefox()
>>> wd.get("http://localhost/example/page")
>>> textbox = wd.find_element_by_css_selector("input")
>>> textbox.send_keys("Hello World\n")
Keys.ENTER
또는 중 하나를 사용할 수 있습니다 Keys.RETURN
. 세부 사항은 다음과 같습니다.
자바 :
사용 Keys.ENTER
:
import org.openqa.selenium.Keys;
driver.findElement(By.id("element_id")).sendKeys(Keys.ENTER);
사용 Keys.RETURN
import org.openqa.selenium.Keys;
driver.findElement(By.id("element_id")).sendKeys(Keys.RETURN);
파이썬 :
사용 Keys.ENTER
:
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("element_id").send_keys(Keys.ENTER)
사용 Keys.RETURN
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("element_id").send_keys(Keys.RETURN)
Keys.ENTER
및 Keys.RETURN
모두에서이다 org.openqa.selenium.Keys
연장, java.lang.Enum<Keys>
및 구현java.lang.CharSequence
열거 키 는 텍스트가 아닌 누를 수있는 키를 나타냅니다. 이것들은 유니 코드 PUA ( Private Use Area ) 코드 포인트 0xE000-0xF8FF에 저장됩니다.
keys codes
그들에게 특별한 것은 다음과 같습니다.
u'\ue006'
u'\ue007'
모든 구현은 Enum Keys
동일한 방식으로 처리됩니다.
따라서이는 없음 Functional
또는 Operational
함께 중 하나를 작업하는 동안 차 sendKeys(Keys.ENTER);
또는 WebElement.sendKeys(Keys.RETURN);
통해 셀레늄 .
대부분의 경우 컴퓨터 키보드에서 Enter(또는 ReturnMac OSX의 경우) 명령 줄, 창 형태 또는 대화 상자가 기본 기능을 작동시킵니다. 이것은 일반적으로 "입력"을 마치고 원하는 프로세스를 시작하는 것이며 일반적으로 OK 버튼을 누르는 것의 대안입니다.
는 Return종종도로서 칭한다 Enter그들은 대개 동일한 기능을 수행한다; 그러나 일부 특정 응용 프로그램 (주로 페이지 레이아웃) Return에서는 캐리지 리턴 키 와 같은 방식으로 작동합니다 . 대조적으로, Enter일반 PC 키보드에서는 이름이 일반 텍스트로 일반 레이블로 표시됩니다.
당신은 이것을 이렇게합니다 :
final private WebElement input = driver.findElement(By.id("myId"));
input.clear();
input.sendKeys(value); // the value we want to set to input
input.sendKeys(Keys.RETURN);
WebDriverJS를 사용하는 사람의 경우 Keys.RETURN
로 참조 할 것
webdriver.Key.RETURN
참조로보다 완전한 예가 도움이 될 수도 있습니다.
var pressEnterToSend = function () {
var deferred = webdriver.promise.defer();
webdriver.findElement(webdriver.By.id('id-of-input-element')).then(function (element) {
element.sendKeys(webdriver.Key.RETURN);
deferred.resolve();
});
return deferred.promise;
};
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')
셀레늄 설명서 '특별 키'참조
Java가있는 Selenium RC의 경우 :
selenium.keyPress("elementID", "\13");
Java가있는 Selenium WebDriver (일명 Selenium2)의 경우 :
driver.findElement(By.id("elementID")).sendKeys(Keys.ENTER);
또는,
driver.findElement(By.id("elementID")).sendKeys(Keys.RETURN);
Actions 클래스를 사용하여 WebDriver에서 Enter를 누르는 다른 방법 :
Actions action = new Actions(driver);
action.sendKeys(driver.findElement(By.id("elementID")), Keys.ENTER).build().perform();
"셀레늄 webdriver (java)의 키보드에서 Enter 키를 누르는 방법"을 찾고 있다면 아래 코드가 분명히 도움이 될 것입니다.
//assign key board object
Keyboard keyboard=((HasInputDevices) driver).getKeyboard();
//enter a key
keyboard.pressKey(Keys.ENTER);
XPATH를 사용하여 요소를 검색하면 다음 코드가 작동합니다.
driver.findElement(By.xpath(".//*[@id='txtFilterContentUnit']")).sendKeys(Keys.ENTER);
C # 키를 누르는 방법은 다음과 같습니다.
Driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);
또는
OpenQA.Selenium.Interactions.Actions action = new OpenQA.Selenium.Interactions.Actions(Driver);
action.SendKeys(OpenQA.Selenium.Keys.Escape);
또는
IWebElement body = GlobalDriver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Escape);
로케이터를 검색하지 않으려면 Robot 클래스를 사용할 수 있습니다. 예 :
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
RUBY의 경우 :-
driver.find_element(:id,"XYZ").send_keys:return
xpath를 사용하는 Selenium WebDriver (키가 보이는 경우) :
driver.findElement(By.xpath("xpath of text field")).sendKeys(Keys.ENTER);
또는,
driver.findElement(By.xpath("xpath of text field")).sendKeys(Keys.RETURN);
자바 / 자바 스크립트 :
아마도 네이티브가 아닌 방식 으로이 작업을 수행 할 수도 있습니다 .
public void triggerButtonOnEnterKeyInTextField(String textFieldId, String clickableButId)
{
((JavascriptExecutor) driver).executeScript("
elementId = arguments[0];
buttonId = arguments[1];
document.getElementById(elementId)
.addEventListener("keyup", function(event) {
event.preventDefault();
if (event.keyCode == 13) {
document.getElementById(buttonId).click();
}
});", textFieldId, clickableButId);
}