Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

วิธีจำลองการกดปุ่ม Enter ในช่องกรอกข้อความ HTML ด้วย Selenium

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