Python과 Selenium을 사용하여 Enter / Return 키를 입력합니까?


260

Selenium에서 키를 입력하고 Enter 또는 Return 키를 빠르게 사용할 수있는 방법을 찾고 있습니다. 불행히도 테스트하려는 양식 (내 코드가 아니므로 수정할 수 없음)에는 제출 버튼이 없습니다. 수동으로 작업 할 때 ENTER또는을 입력하십시오 RETURN. type클릭 버튼이 없으므로 Selenium 명령으로 수행하는 방법을 알아야합니다 .


2
도움이 될 수 있습니다 asynchrony.blogspot.com/2008/11/…
Jonathan Parker

고마워, 그게 바로 내가 필요했던 것이었다!
croixhaug

@croixhaug : 무엇을 사용하고 있습니까? 셀레늄 RC 또는 웹 드라이버 (Selenium 2)? 언어는 어떻습니까? 자바? 씨#? 또는 무엇을?
Ripon Al Wasim 2012 년

@RiponAlWasim, 2009 년 (질문이 물었을 때)에는 WebDriver가 없었습니다. 또한 둘 다에 대한 답변은 한동안 여기에 있었다 ...
Alex Okrushko

@AlexOkrushko : 그래, 당신 말이 맞아요
리폰 알 Wasim

답변:


296
import org.openqa.selenium.Keys

WebElement.sendKeys(Keys.RETURN);

import문장은 Java 용이며 다른 언어의 경우 파이썬과 같이 다를 수 있습니다.from selenium.webdriver.common.keys import Keys


25
나는 그것이 움직 였다고 믿습니다. from selenium.webdriver.common.keys import Keys( stackoverflow.com/questions/5503489/… )
James Broadhead

@HJames 브로드 헤드 : 나는 그것을 확인 한 실제 JAVA (2.17.0)에 대한 키 클래스는 여전히org.openqa.selenium.Keys
랄프

3
return과 enter가 다르지만 Keys.ENTER는 어떻게 다릅니 까? (저는 Keys.RETURN이 단순히 행동을하는 봇이라는 사실을 더 명확하게 해줄 것이라고 생각합니다.)
NoBrainer

1
@NoBrainer : 가져온 파일을 훑어 보면 질문에 대한 답변이됩니다 RETURN = '\ue006' ENTER = '\ue007'. 그런데 왜? 일부 유물 또는 OS 차이점.
omikron

2
@NoBrainer : Enter와 Return은 다른 키입니다.이 위키 백과 기사의 이미지를 살펴보십시오. en.wikipedia.org/wiki/Enter_key
Ralph

193

자바

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);

1
파이썬의 경우 입력 문자열에 "\ n"을 추가하는 것이 가장 간단한 방법이라는 것을 알았습니다. 검색 필드에서 작동했습니다.
YakovK

26

이제 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")

24

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.ENTERKeys.RETURN모두에서이다 org.openqa.selenium.Keys연장, java.lang.Enum<Keys>및 구현java.lang.CharSequence


열거 형 키

열거 키 는 텍스트가 아닌 누를 수있는 키를 나타냅니다. 이것들은 유니 코드 PUA ( Private Use Area ) 코드 포인트 0xE000-0xF8FF에 저장됩니다.

키 코드 :

keys codes그들에게 특별한 것은 다음과 같습니다.

  • 반품 =u'\ue006'
  • ENTER =u'\ue007'

모든 구현은 Enum Keys동일한 방식으로 처리됩니다.

따라서이는 없음 Functional 또는 Operational함께 중 하나를 작업하는 동안 차 sendKeys(Keys.ENTER);또는 WebElement.sendKeys(Keys.RETURN);통해 셀레늄 .


키 및 리턴 키 입력

대부분의 경우 컴퓨터 키보드에서 Enter(또는 ReturnMac OSX의 경우) 명령 줄, 창 형태 또는 대화 상자가 기본 기능을 작동시킵니다. 이것은 일반적으로 "입력"을 마치고 원하는 프로세스를 시작하는 것이며 일반적으로 OK 버튼을 누르는 것의 대안입니다.

Return종종도로서 칭한다 Enter그들은 대개 동일한 기능을 수행한다; 그러나 일부 특정 응용 프로그램 (주로 페이지 레이아웃) Return에서는 캐리지 리턴 키 와 같은 방식으로 작동합니다 . 대조적으로, Enter일반 PC 키보드에서는 이름이 일반 텍스트로 일반 레이블로 표시됩니다.


참고 문헌


12

HTML 테스트를 작성할 때 ENTER 키는로 사용할 수 있습니다 ${KEY_ENTER}.

와 함께 사용할 수 있습니다 sendKeys. 예는 다음과 같습니다.

sendKeys | id=search | ${KEY_ENTER}

11

파이썬에서

1 단계. from selenium.webdriver.common.keys import Keys

2 단계. driver.find_element_by_name("").send_keys(Keys.ENTER)

참고 : 작성해야합니다Keys.ENTER


9

당신은 이것을 이렇게합니다 :

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);

호기심 때문에, 한 줄로 작성할 수있는 3 줄의 코드 작성을 선호하는 이유
Shekhar Swami


6

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;
};

6

driver.findElement(By.id("Value")).sendKeys(Keys.RETURN); 또는 driver.findElement(By.id("Value")).sendKeys(Keys.ENTER);


6
search = browser.find_element_by_xpath("//*[@type='text']")
search.send_keys(u'\ue007')

ENTER = u '\ ue007'

셀레늄 설명서 '특별 키'참조


이 답변은 효과가 있지만 실수로 잘못된 번호를 사용했기 때문에 투표에 실패했습니다.
Martin Kersten

5

그냥 내 오이 시험이 필요하고 입력 / 리턴 키를 눌러 시뮬레이션을 좋아하는 경우에, 당신은 보낼 필요가 있음을 발견 참고로 같은 I :return값과 하지:enter 값 (값이 설명 참조 여기를 )


이것은 GWT 입력 텍스트 필드에도 해당됩니다.
joescii

5

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();

3

"셀레늄 webdriver (java)의 키보드에서 Enter 키를 누르는 방법"을 찾고 있다면 아래 코드가 분명히 도움이 될 것입니다.

//assign key board object
Keyboard keyboard=((HasInputDevices) driver).getKeyboard();
//enter a key
keyboard.pressKey(Keys.ENTER);

1
제공하는 솔루션에 대한 설명을 조금 더 추가하여 답변을 더 자세히 설명해 주시겠습니까?
abarisone

3

submit()텍스트를 입력 한 요소 객체를 호출 할 수 있습니다 .

또는이 파이썬 스 니펫에 표시된 것처럼 Enter 키를 구체적으로 보낼 수 있습니다.

from selenium.webdriver.common.keys import Keys
element.send_keys(Keys.ENTER) # element is the WebElement object corresponding to the input field on the page

2

XPATH를 사용하여 요소를 검색하면 다음 코드가 작동합니다.

driver.findElement(By.xpath(".//*[@id='txtFilterContentUnit']")).sendKeys(Keys.ENTER);

요소에 ID가있는 경우 xpath 대신 ID를 사용하는 것이 좋습니다
Ripon Al Wasim

2

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);


2

로케이터를 검색하지 않으려면 Robot 클래스를 사용할 수 있습니다. 예 :

            Robot robot = new Robot();
            robot.keyPress(KeyEvent.VK_ENTER);
            robot.keyRelease(KeyEvent.VK_ENTER);

2

셀레늄을 사용하여 키를 입력하려면 먼저 다음 라이브러리를 가져와야합니다.

"import org.openqa.selenium.Keys"

그런 다음 키를 입력 할 위치 에이 코드를 추가하십시오

"WebElement.sendKeys(Keys.RETURN);"

요구 사항에 따라 RETURN을 목록의 키로 바꿀 수 있습니다.


1

WebDriver의 경우에도 Action 인터페이스를 사용하여 달성 할 수 있습니다.

WebElement username = driver.findElement(By.name("q"));
username.sendKeys(searchKey);
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);
action.perform();


1

당신은 시도 할 수 있습니다 :

selenium.keyPress("id="","\\13");

1

텍스트 중간에 Enter 키를 보내야했습니다. 그래서 나는 달성하기 위해 키 기능을 보내기 위해 다음 텍스트를 전달했습니다.1\n2\n3

1\N{U+E007}2\N{U+E007}3

1

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);

1

이 특정 상황에 처한 경우 :

a) 그냥 키를 누르고 싶지만 클릭 할 특정 webElement가 없습니다.

b) Selenium 2 (webDriver)를 사용하고 있습니다.

그런 다음 해결책은 다음과 같습니다.

    Actions builder = new Actions(webDriverInstance);
    builder.sendKeys(Keys.RETURN).perform();

1

자바 / 자바 스크립트 :

아마도 네이티브가 아닌 방식 으로이 작업을 수행 할 수도 있습니다 .

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);
}

1
Actions action = new Actions(driver);
action.sendKeys(Keys.RETURN);

0

javascript / node 사용하는 모든 사람들에게 이것은 나를 위해 일했습니다.

driver.findElement(By.xpath('xpath')).sendKeys('ENTER');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.