Gửi nhiều khóa Selenium Python

Chỉ có 2 hành động có thể được thực hiện bằng bàn phím. nhấn xuống một phím và nhả một phím đã nhấn. Ngoài việc hỗ trợ các ký tự ASCII, mỗi phím trên bàn phím đều có một biểu tượng có thể được nhấn hoặc nhả theo trình tự được chỉ định

Ngoài các phím được biểu thị bằng unicode thông thường, các giá trị unicode đã được gán cho các phím bàn phím khác để sử dụng với Selenium. Mỗi ngôn ngữ có cách riêng để tham chiếu các khóa này;

Sử dụng [Phím Java enum][https. //github. com/SeleniumHQ/selenium/blob/selenium-4. 2. 0/java/src/org/openqa/selenium/Keys. java#L28]

Sử dụng [Lớp Python Keys][https. //github. com/SeleniumHQ/selenium/blob/selenium-4. 2. 0/py/selenium/webdriver/common/keys. py#L23]

Sử dụng [. NET tĩnh][https. //github. com/SeleniumHQ/selenium/blob/selenium-4. 2. 0/dotnet/src/webdriver/Keys. cs#L28]

Sử dụng [Hằng số Ruby KEYS][https. //github. com/SeleniumHQ/selenium/blob/selenium-4. 2. 0/rb/lib/selenium/webdriver/common/keys. rb#L28]

Sử dụng [hằng số KHÓA JavaScript][https. //github. com/SeleniumHQ/selenium/blob/selenium-4. 2. 0/javascript/nút/selenium-webdo/lib/đầu vào. js#L44]

Sử dụng [Phím Java enum][https. //github. com/SeleniumHQ/selenium/blob/selenium-4. 2. 0/java/src/org/openqa/selenium/Keys. java#L28]

Đây là một phương pháp tiện lợi trong API hành động kết hợp các lệnh keyDown và keyUp trong một hành động. Việc thực thi lệnh này hơi khác so với việc sử dụng phương thức phần tử, nhưng về cơ bản, lệnh này được sử dụng khi cần nhập nhiều ký tự ở giữa các hành động khác

Đây là một ví dụ về việc sử dụng tất cả các phương pháp trên để thực hiện hành động sao chép/dán. Lưu ý rằng khóa được sử dụng cho thao tác này sẽ khác nhau tùy thuộc vào việc đó có phải là Mac OS hay không. Mã này sẽ kết thúc bằng văn bản. SeleniumSelenium!

Trong bài viết về Actions Class trong Selenium, chúng ta đã thảo luận rằng Selenium cung cấp một tính năng để xử lý các sự kiện bàn phím nơi cử chỉ của người dùng có thể mô phỏng. Ví dụ: giả sử bạn tìm kiếm "Ấn Độ" trên công cụ tìm kiếm google. Đối với điều này, bạn sẽ gõ "Ấn Độ " và nhấn phím Enter, để bạn thấy các truy vấn kết quả. Giả sử, bạn muốn tự động hóa tìm kiếm trên google này bằng cách sử dụng thử nghiệm Selenium, bạn sẽ mô phỏng cách nhấn phím ENTER bằng mã Selenium như thế nào? . Trong hướng dẫn này, chúng tôi sẽ trình bày chi tiết về tất cả các sự kiện Bàn phím được hỗ trợ bởi Selenium. Ngoài ra, chúng ta cũng sẽ xem lớp Actions phù hợp như thế nào với nhu cầu mô phỏng các sự kiện bàn phím trong Selenium

  • Sự kiện bàn phím trong Selenium là gì?
  • Tại sao lớp Hành động cần thiết để thực hiện các hành động Bàn phím bằng Selenium WebDriver?
  • Lớp hành động trong Selenium WebDriver là gì?
  • Các phương pháp khác nhau được cung cấp bởi lớp Hành động cho Sự kiện Bàn phím là gì?
  • Làm cách nào để xử lý các Thao tác bàn phím liền kề bằng Lớp hành động?

Sự kiện bàn phím trong Selenium là gì?

Sự kiện bàn phím mô tả tương tác của người dùng với bàn phím. Khi người dùng nhấn một hoặc nhiều phím, các sự kiện bàn phím sẽ tạo ra. Selenium cung cấp nhiều cách khác nhau để tự động hóa các Sự kiện bàn phím này, một vài trong số đó là

  • Tự động hóa các sự kiện bàn phím bằng phương thức sendKeys[] của lớp WebElement
  • Tự động hóa các sự kiện bàn phím bằng lớp Robot
  • Và Tự động hóa các sự kiện bàn phím bằng lớp Hành động

Chúng tôi đã thảo luận về hai cách đầu tiên để xử lý các sự kiện bàn phím bằng cách sử dụng phương thức "sendKeys[]" của lớp WebElement của WebDriver và "lớp Robot" trong các bài viết được cung cấp bởi các liên kết tương ứng. Trong bài viết này, chúng tôi sẽ trình bày cụ thể chi tiết về lớp "Actions" trong Selenium WebDriver. Trước khi đi sâu tìm hiểu các khái niệm về lớp "Hành động ", trước tiên chúng ta hãy hiểu tại sao cụ thể là cần có lớp "Hành động " để xử lý các Sự kiện bàn phím đó?

Tại sao lớp Hành động cần thiết để thực hiện các hành động Bàn phím bằng Selenium WebDriver?

Khi chúng ta tương tác với một ứng dụng web, sẽ có nhiều tình huống xảy ra khi người dùng thực hiện các thao tác sau

  • Nhập chữ in hoa/chữ hoa lạc đà. Bất cứ nơi nào người dùng cần nhập một từ hoặc chữ in hoa, họ sẽ nhấn phím "SHIFT" và sẽ nhập các ký tự cần thiết, và bất kỳ ký tự nào sẽ nhập trong khi nhấn phím "SHIFT" sẽ được nhập dưới dạng chữ in hoa
  • Sao chép & Dán văn bản. Khi chúng tôi cần sao chép một số văn bản từ hộp văn bản này sang hộp văn bản khác, chúng tôi chọn văn bản bằng cách nhấn "CTRL+A" họ sao chép văn bản bằng cách sử dụng "CTRL+C" và dán văn bản vào hộp văn bản mới bằng cách nhấp vào văn bản

Đây là những hành động rất phổ biến của người dùng mà chúng tôi thực hiện gần như hàng ngày. Bây giờ, như chúng ta đã thảo luận, Selenium WebDriver cung cấp hai cách để gửi bất kỳ sự kiện bàn phím nào tới phần tử web

  • phương thức sendKeys[] của lớp WebElement
  • lớp hành động

Bây giờ chúng ta hãy cố gắng tìm hiểu chi tiết rằng nếu chúng ta muốn tự động hóa kịch bản như đã đề cập ở trên về việc gõ các chữ cái viết hoa [với phím SHIFT được nhấn ], sử dụng phương thức sendKeys[] của lớp WebElement

Hãy xem xét kịch bản sau đây để nhanh chóng hiểu được hành vi

  • Đầu tiên, điều hướng đến "https. // demoqa. com/hộp văn bản. "
  • Thứ hai, nhập Họ tên. "Ông. Peter Haynes"
  • Thứ ba, nhập Email. "[email được bảo vệ]"
  • Sau đó, Nhập địa chỉ hiện tại. "43 Ngõ Trường Luân Đôn EC71 9GO"
  • Thứ năm, nhấp vào hộp văn bản Địa chỉ hiện tại và Sao chép Địa chỉ hiện tại
  • Sau đó, dán địa chỉ đã sao chép vào hộp văn bản Địa chỉ thường trú
  • Cuối cùng, xác thực rằng văn bản trong Địa chỉ hiện tại và Địa chỉ thường trú giống nhau

Hãy thử tự động hóa tình huống trên bằng phương thức sendKeys[] của lớp WebElement

package automationFramework;

import static org.junit.Assert.assertEquals;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class KeyboardEvents {

	public static void main[String[] args] {
		
        // Initialize ChromeDriver
	// Here we assume that the ChromeDriver path has been set in the System Global variables
        WebDriver driver=new ChromeDriver[];
       
        //Navigate to the demo site
        driver.get["//demoqa.com/text-box"];
       
        // Enter the Full Name
        WebElement fullName = driver.findElement[By.id["userName"]];
        fullName.sendKeys["Mr.Peter Haynes"];
        
        //Enter the Email
        WebElement email=driver.findElement[By.id["userEmail"]];
        email.sendKeys["[email protected]"];
        
        // Enter the Current Address
        WebElement currentAddress=driver.findElement[By.id["currentAddress"]];
        currentAddress.sendKeys["43 School Lane London EC71 9GO"];
        
        // Copy the Current Address
        currentAddress.sendKeys[Keys.CONTROL];
        currentAddress.sendKeys["A"];
        currentAddress.sendKeys[Keys.CONTROL];
        currentAddress.sendKeys["C"];
        
        //Press the TAB Key to Switch Focus to Permanent Address
        currentAddress.sendKeys[Keys.TAB];
        
        //Paste the Address in the Permanent Address field
        WebElement permanentAddress=driver.findElement[By.id["permanentAddress"]];
        permanentAddress.sendKeys[Keys.CONTROL];
        permanentAddress.sendKeys["V"];
        
        //Compare Text of current Address and Permanent Address
        assertEquals[currentAddress.getAttribute["value"],permanentAddress.getAttribute["value"]];
        
        driver.close[];

	}
}

Trong đoạn mã trên, mặc dù phương thức sendKeys[] của WebElement cho phép sử dụng Khóa điều khiển, nhưng nó không thể thực hiện hành động sao chép và dán vì không thể kết hợp các chuỗi khóa

Như chúng ta có thể thấy từ ảnh chụp màn hình sau, thay vì dán nội dung của Địa chỉ hiện tại vào trường văn bản Địa chỉ thường trú, nó chỉ dán ký tự "V"

[email protected]"]; // Enter the Current Address WebElement currentAddress=driver.findElement[By.id["currentAddress"]]; currentAddress.sendKeys["43 School Lane London EC71 9GO"]; // Select the Current Address using CTRL + A actions.keyDown[Keys.CONTROL]; actions.sendKeys["a"]; actions.keyUp[Keys.CONTROL]; actions.build[].perform[]; // Copy the Current Address using CTRL + C actions.keyDown[Keys.CONTROL]; actions.sendKeys["c"]; actions.keyUp[Keys.CONTROL]; actions.build[].perform[]; //Press the TAB Key to Switch Focus to Permanent Address actions.sendKeys[Keys.TAB]; actions.build[].perform[]; //Paste the Address in the Permanent Address field using CTRL + V actions.keyDown[Keys.CONTROL]; actions.sendKeys["v"]; actions.keyUp[Keys.CONTROL]; actions.build[].perform[]; //Compare Text of current Address and Permanent Address WebElement permanentAddress=driver.findElement[By.id["permanentAddress"]]; assertEquals[currentAddress.getAttribute["value"],permanentAddress.getAttribute["value"]]; driver.close[]; } }

Khi chúng tôi chạy đoạn mã trên, chúng tôi nhận được một đầu ra mẫu, như được hiển thị bên dưới

[email protected]"]; // Enter the Current Address WebElement currentAddress=driver.findElement[By.id["currentAddress"]]; currentAddress.sendKeys["43 School Lane London EC71 9GO"]; // Select the Current Address actions.keyDown[Keys.CONTROL].sendKeys["a"].keyUp[Keys.CONTROL].build[].perform[]; // Copy the Current Address actions.keyDown[Keys.CONTROL].sendKeys["c"].keyUp[Keys.CONTROL].build[].perform[]; //Press the TAB Key to Switch Focus to Permanent Address actions.sendKeys[Keys.TAB].build[].perform[]; //Paste the Address in the Permanent Address field actions.keyDown[Keys.CONTROL].sendKeys["v"].keyUp[Keys.CONTROL].build[].perform[]; //Compare Text of current Address and Permanent Address WebElement permanentAddress=driver.findElement[By.id["permanentAddress"]]; assertEquals[currentAddress.getAttribute["value"],permanentAddress.getAttribute["value"]]; driver.close[]; } }

Đoạn mã trên sẽ thực hiện chính xác chức năng giống như đã được giới thiệu tóm tắt trong phần trước. Sự khác biệt duy nhất giữa hai là mã này trông nhỏ gọn và dễ đọc hơn. Vì vậy, theo cách này, chúng ta có thể kết hợp nhiều phương thức khác nhau của lớp Actions. Ngoài ra, chúng tôi có thể mô phỏng hành vi của người dùng đối với các thao tác Bàn phím khác nhau

Làm cách nào để nhấn nhiều phím trong Selenium Python?

Xin chào Jasmine, có một số cách để xử lý nhiều phím trên bàn phím trong Selenium Webdriver. .
Sử dụng lớp hành động. Hành động hành động = hành động mới [trình điều khiển]; . keyDown[Phím. .
Sử dụng Hợp âm SendKeys. người lái xe. findElement[By. .
Sử dụng lớp Robot. // Tạo lớp Robot Robot rb = new Robot[];

Làm cách nào để xử lý nhiều khóa trong Selenium?

Chúng tôi có thể xử lý nhiều phím trên bàn phím trong Selenium webdriver bằng cách sử dụng phương thức Keys. hợp âm . Nhiều phím bàn phím được xử lý được truyền dưới dạng tham số cho phương thức này. Kiểu trả về của Keys.

Làm cách nào để gửi nhiều khóa trong Selenium Java?

IDE Selenium mới . Keys. phương pháp chord[] để mô phỏng hành động bàn phím này. Những chiếc chìa khóa. phương thức chord[] giúp nhấn nhiều phím cùng lúc.

Làm cách nào để gửi các phím bàn phím trong Selenium?

Hành động mới [trình điều khiển]. keyDown[Phím. SỰ THAY ĐỔI]. sendKeys["a"]. .
ActionChains[trình điều khiển]\. key_down[Phím. SỰ THAY ĐỔI]\. send_keys["a"]\. .
Hành động mới [trình điều khiển]. KeyDown[Phím. Sự thay đổi]. SendKeys["a"]. .
người lái xe. hoạt động. key_down[. sự thay đổi]. .
đợi tài xế. hành động[]. keyDown[Khóa. .
Hành động [trình điều khiển]. keyDown[Phím. SỰ THAY ĐỔI]

Chủ Đề