ใน Selenium สามารถจำลองการกดปุ่ม Enter หรือ Return ได้โดยใช้เมธอด sendKeys() ร่วมกับคลาส Keys
ไวยากรณ์ (Syntax)
// Java element.sendKeys(Keys.ENTER); // หรือ element.sendKeys(Keys.RETURN);
# Python element.send_keys(Keys.ENTER) # หรือ element.send_keys(Keys.RETURN)
ตัวอย่างโค้ด Java สมบูรณ์ (Keys.ENTER)
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
public class PressEnter {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.example.com/search");
// หาช่องค้นหา
WebElement searchBox = driver.findElement(By.id("search-input"));
// พิมพ์คำค้นหา
searchBox.sendKeys("Selenium");
// กด Enter
searchBox.sendKeys(Keys.ENTER);
driver.quit();
}
}
ตัวอย่างโค้ด Python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://www.example.com/search")
search_box = driver.find_element(By.ID, "search-input")
search_box.send_keys("Selenium")
search_box.send_keys(Keys.ENTER)
driver.quit()
Keys.ENTER vs Keys.RETURN
| คีย์ | คำอธิบาย | รหัส ASCII |
|---|---|---|
Keys.ENTER |
ปุ่ม Enter บนคีย์บอร์ดหลัก (Numpad Enter) | 13 (Carriage Return) |
Keys.RETURN |
ปุ่ม Return (เดิมทีบน Mac/Typewriter) | 13 (Carriage Return) |
ในทางปฏิบัติ ทั้งคู่ทำงานเหมือนกัน ใน Selenium (ส่งรหัส 13) เลือกใช้ตัวไหนก็ได้
กรณีใช้งานทั่วไป
- ส่งฟอร์มค้นหาโดยไม่ต้องคลิกปุ่ม Submit
- ทดสอบการส่งข้อความใน Chat/Comment
- Trigger event
onkeypress/onkeydownที่ listen Enter - Submit ฟอร์มที่ไม่มีปุ่ม Submit
วิธีทางเลือก: ใช้ JavaScript
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].dispatchEvent(new KeyboardEvent('keydown', {key: 'Enter', code: 'Enter', keyCode: 13, which: 13}));", element);