Mengetikkan tombol Enter / Return menggunakan Python dan Selenium?


260

Saya mencari cara cepat untuk mengetik dan tombol Enter atau Return di Selenium. Sayangnya formulir yang saya coba untuk menguji (bukan kode saya sendiri sehingga saya tidak dapat memodifikasi) tidak memiliki tombol Kirim. Ketika bekerja dengannya secara manual, saya cukup ketik ENTERatau RETURN. Saya perlu tahu bagaimana melakukan itu dengan typeperintah Selenium karena tidak ada tombol untuk mengklik.



terima kasih, itulah yang saya butuhkan!
croixhaug

@croixhaug: Apa yang Anda gunakan? Selenium RC atau WebDriver (Selenium 2)? Bagaimana dengan bahasa? Jawa? C #? atau apa?
Ripon Al Wasim

@RiponAlWasim, pada tahun 2009 (ketika pertanyaan diajukan) tidak ada WebDriver. Juga jawaban untuk keduanya telah di sini untuk sementara waktu ...
Alex Okrushko

@AlexOkrushko: ya, Anda benar
Ripon Al Wasim

Jawaban:


296
import org.openqa.selenium.Keys

WebElement.sendKeys(Keys.RETURN);

yang importpernyataan untuk Java, untuk bahasa lain itu mungkin berbeda, misalnya python:from selenium.webdriver.common.keys import Keys


25
Saya percaya bahwa itu dipindahkan. from selenium.webdriver.common.keys import Keys( stackoverflow.com/questions/5503489/... )
James Broadhead

@HJames Broadhead: Saya telah memeriksanya, kelas Keys untuk JAVA yang sebenarnya (2.17.0) masihorg.openqa.selenium.Keys
Ralph

3
Saya tahu bahwa return berbeda dari enter, tetapi bagaimana Keys .ENTER berbeda? (Saya akan berpikir bahwa Keys.RETURN hanya akan membuatnya lebih jelas bahwa itu adalah bot yang melakukan tindakan?)
NoBrainer

1
@NoBrainer: Cepat melihat file yang diimpor akan menjawab pertanyaan Anda: RETURN = '\ue006' ENTER = '\ue007'. Tapi kenapa? Beberapa perbedaan peninggalan atau OS.
omikron

2
@NoBrainer: Masuk dan Kembali adalah kunci yang berbeda, lihat gambar artikel wikipedia ini: en.wikipedia.org/wiki/Enter_key
Ralph

193

JAWA

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

ATAU,

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

PYTHON

from selenium.webdriver.common.keys import Keys
driver.find_element_by_name("Value").send_keys(Keys.RETURN)

ATAU,

driver.find_element_by_name("Value").send_keys(Keys.ENTER)

ATAU,

element = driver.find_element_by_id("Value")
element.send_keys("keysToSend")
element.submit()

RUBI

element = @driver.find_element(:name, "value")
element.send_keys "keysToSend"
element.submit

ATAU,

element = @driver.find_element(:name, "value")
element.send_keys "keysToSend"
element.send_keys:return

ATAU,

@driver.action.send_keys(:enter).perform
@driver.action.send_keys(:return).perform

C #

driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);

ATAU,

driver.FindElement(By.Id("Value")).SendKeys(Keys.Enter);

1
Untuk Python, saya menemukan bahwa menambahkan "\ n" ke string input adalah cara yang paling mudah. Itu bekerja di bidang pencarian.
YakovK

26

Sekarang Selenium 2 telah dirilis, sedikit lebih mudah untuk mengirim kunci Enter, karena Anda dapat melakukannya dengan send_keysmetode selenium.webdriver.remote.webelement.WebElementkelas (kode contoh ini adalah dalam Python, tetapi metode yang sama ada di Jawa):

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

Anda dapat menggunakan salah satu dari Keys.ENTERatau Keys.RETURN. Berikut ini beberapa detailnya:

Penggunaan:

  • Jawa :

    • Menggunakan Keys.ENTER:

      import org.openqa.selenium.Keys;
      driver.findElement(By.id("element_id")).sendKeys(Keys.ENTER);
      
    • Menggunakan Keys.RETURN

      import org.openqa.selenium.Keys;
      driver.findElement(By.id("element_id")).sendKeys(Keys.RETURN);
      
  • Python:

    • Menggunakan Keys.ENTER:

      from selenium.webdriver.common.keys import Keys
      driver.find_element_by_id("element_id").send_keys(Keys.ENTER)
      
    • Menggunakan Keys.RETURN

      from selenium.webdriver.common.keys import Keys
      driver.find_element_by_id("element_id").send_keys(Keys.RETURN)
      

Keys.ENTERdan Keys.RETURNkeduanya berasal org.openqa.selenium.Keys, yang meluas java.lang.Enum<Keys>dan mengimplementasikanjava.lang.CharSequence


Tombol Enum

Enum Keys adalah representasi dari tombol yang dapat ditekan yang bukan berupa teks. Ini disimpan dalam poin kode Unicode PUA ( Area Penggunaan Pribadi ), 0xE000-0xF8FF.

Kode Kunci:

Yang spesial keys codesuntuk mereka adalah sebagai berikut:

  • RETURN =u'\ue006'
  • ENTER =u'\ue007'

Implementasi semua Enum Keysditangani dengan cara yang sama.

Karenanya ini adalah TIDAK Functional atau Operationalperbedaan saat bekerja dengan salah satu sendKeys(Keys.ENTER);atau WebElement.sendKeys(Keys.RETURN);melalui Selenium .


Enter Key dan Return Key

Pada keyboard komputer, Enter(atau Returnpada Mac OSX) dalam banyak kasus menyebabkan baris perintah, formulir jendela, atau kotak dialog untuk mengoperasikan fungsi standarnya. Ini biasanya untuk menyelesaikan "entri" dan memulai proses yang diinginkan, dan biasanya merupakan alternatif untuk menekan tombol OK.

Ini Returnsering juga disebut sebagai Enterdan mereka biasanya melakukan fungsi yang identik; namun dalam beberapa aplikasi tertentu (terutama tata letak halaman) Returnberoperasi secara khusus seperti kunci Pengembalian Carriage dari mana asalnya. Sebaliknya, Enterini biasanya diberi label dengan namanya dalam teks biasa pada keyboard PC umum.


Referensi


12

Saat menulis tes HTML, tombol ENTER tersedia sebagai ${KEY_ENTER}.

Anda dapat menggunakannya dengan sendKeys, berikut adalah contohnya:

sendKeys | id=search | ${KEY_ENTER}

11

Dengan Python

Langkah 1. from selenium.webdriver.common.keys import Keys

Langkah 2. driver.find_element_by_name("").send_keys(Keys.ENTER)

Catatan: Anda harus menulisKeys.ENTER


9

Anda hanya melakukan ini:

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

hanya ingin tahu, mengapa Anda lebih suka menulis 3 baris kode yang dapat Anda tulis dalam satu baris
Shekhar Swami


6

Bagi orang-orang yang menggunakan WebDriverJS Keys.RETURNakan dirujuk sebagai

webdriver.Key.RETURN

Contoh yang lebih lengkap sebagai referensi mungkin juga membantu:

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

lihat dokumentasi selenium 'Tombol Khusus'


Jawaban ini berhasil tetapi tidak sengaja memilihnya karena saya menggunakan nomor yang salah.
Martin Kersten

5

Aku seperti untuk catatan bahwa saya perlu ini untuk tes Cucumber saya dan menemukan bahwa jika Anda ingin mensimulasikan menekan masuk / tombol kembali, Anda perlu mengirim :returnnilai dan tidak pada :enternilai (melihat nilai-nilai yang dijelaskan di sini )


Ini juga berlaku untuk bidang teks input GWT.
joescii

5

Untuk Selenium RC dengan Java:

selenium.keyPress("elementID", "\13");

Untuk Selenium WebDriver (alias Selenium2) dengan java:

driver.findElement(By.id("elementID")).sendKeys(Keys.ENTER);

ATAU,

driver.findElement(By.id("elementID")).sendKeys(Keys.RETURN);

Cara lain untuk menekan Enter di WebDriver dengan menggunakan kelas Tindakan:

Actions action = new Actions(driver); 
action.sendKeys(driver.findElement(By.id("elementID")), Keys.ENTER).build().perform();

3

jika Anda mencari "cara menekan tombol enter dari keyboard di selenium webdriver (java)", maka kode di bawah ini pasti akan membantu Anda.

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

1
Bisakah Anda menjelaskan lebih lanjut jawaban Anda dengan menambahkan sedikit deskripsi tentang solusi yang Anda berikan?
abarisone

3

Anda dapat memanggil submit()objek elemen tempat Anda memasukkan teks.

Sebagai alternatif, Anda dapat secara khusus mengirim kunci enter seperti yang ditunjukkan dalam cuplikan python ini:

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

Coba gunakan XPATH untuk mencari elemen dan kemudian, kode berikut berfungsi:

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

Jika elemen memiliki ID, lebih baik menggunakan ID daripada xpath
Ripon Al Wasim

2

Ada beberapa cara berikut untuk menekan tombol - C #:

Driver.FindElement(By.Id("Value")).SendKeys(Keys.Return);

ATAU

OpenQA.Selenium.Interactions.Actions action = new OpenQA.Selenium.Interactions.Actions(Driver);
action.SendKeys(OpenQA.Selenium.Keys.Escape);

ATAU

IWebElement body = GlobalDriver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Escape);


2

Saat Anda tidak ingin mencari pelacak apa pun, Anda dapat menggunakan kelas Robot: misalnya:

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

2

Untuk memasukkan kunci menggunakan selenium Pertama, Anda perlu mengimpor perpustakaan berikut:

"import org.openqa.selenium.Keys"

lalu tambahkan kode ini di tempat Anda ingin memasukkan kunci

"WebElement.sendKeys(Keys.RETURN);"

Anda dapat mengganti RETURN dengan kunci apa saja dari daftar sesuai dengan kebutuhan Anda


1

Dapat dicapai menggunakan antarmuka Tindakan juga, dalam kasus WebDriver -

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


1

Anda dapat mencoba :

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

1

Saya harus mengirim kunci enter di tengah teks. Jadi saya melewati teks berikut untuk mengirim fungsi tombol untuk mencapai1\n2\n3

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

1

Untuk Selenium WebDriver menggunakan xpath (Jika kuncinya terlihat):

driver.findElement(By.xpath("xpath of text field")).sendKeys(Keys.ENTER);

atau,

driver.findElement(By.xpath("xpath of text field")).sendKeys(Keys.RETURN);

1

Jika Anda berada dalam situasi khusus ini:

a) ingin HANYA menekan tombol, tetapi tidak memiliki webElement spesifik untuk mengklik

b) Anda menggunakan Selenium 2 (webDriver)

Maka solusinya adalah:

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

1

JAVA / JavaScript:

Anda mungkin dapat melakukannya dengan cara ini, secara non-native :

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

Untuk semua orang yang menggunakan javascript / simpul , ini bekerja untuk saya:

driver.findElement(By.xpath('xpath')).sendKeys('ENTER');
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.