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 Show
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. 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ì?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à
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
Đâ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
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
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
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" Như rõ ràng từ ảnh chụp màn hình ở trên, văn bản của trường văn bản Địa chỉ hiện tại không sao chép vào trường văn bản Địa chỉ thường trú, do đó dẫn đến việc xác nhận không thành công khi so sánh văn bản của hai trường này xảy ra. Vì vậy, khi chúng tôi thực hiện kiểm tra trên, nó không thành công với thông báo lỗi sau Vì vậy, đây là nơi phương thức sendKeys() của lớp WebElement bị lỗi. Nói cách khác, nó không thành công khi chúng ta cần kết hợp các phím đặc biệt như "SHIFT", "CONTROL", v.v. với các chuỗi khóa khác nhau, mà tất cả chúng ta đều biết, là một tình huống phổ biến khi chúng ta với tư cách là người dùng đang sử dụng bất kỳ ứng dụng web nào Do đó, đây là lúc lớp Hành động của Selenium WebDriver xuất hiện, cung cấp nhiều phương thức khác nhau để xử lý cụ thể hoạt động của các phím bàn phím meta này, cần nhấn trong khi thực hiện các thao tác trên các phím bàn phím khác. Hãy xem cách chúng ta có thể xử lý các thao tác bàn phím như vậy, sử dụng lớp Actions của Selenium WebDriver Lớp hành động trong Selenium WebDriver là gì?Như chúng ta đã thảo luận ở trên, Selenium WebDriver cung cấp một lớp có tên là "Hành động", lớp này cung cấp nhiều phương thức khác nhau có thể giúp tự động hóa và mô phỏng các hành động của Bàn phím và Chuột. Hình bên dưới hiển thị danh sách đầy đủ các phương pháp được cung cấp bởi Selenium Web Driver và những phương pháp được tô sáng là những phương pháp được sử dụng nhiều nhất để mô phỏng các thao tác của Bàn phím Hãy hiểu các phương thức cụ thể của Bàn phím được cung cấp bởi Lớp Hành động 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ì?Như được đánh dấu trong ảnh chụp màn hình ở trên, lớp Hành động chủ yếu cung cấp ba phương thức sau để mô phỏng các sự kiện Bàn phím
Phương thức này sẽ gửi một chuỗi khóa tới phần tử web hiện đang được đặt tiêu điểm, tôi. e. , nếu chúng tôi muốn gửi các ký tự cụ thể đến một phần tử web, phần tử đó phải được lấy nét trước, sau đó chỉ các ký tự được đề cập mới chuyển đến phần tử web đó
Việc triển khai phương thức sendKeys() này sẽ gửi một chuỗi ký tự/khóa tới một phần tử web cụ thể, phần tử này sẽ chuyển thành tham số đầu tiên cho phương thức. Phương pháp này trước tiên tập trung vào phần tử web đích và sau đó thực hiện hành động tương tự như sendKeys(CharSequence keys)
Phương pháp này nhấn phím được chỉ định trên Phần tử Web hiện được đặt tiêu điểm. Phương pháp này thường nhấn các "Phím bổ trợ" như SHIFT, CTRL, v.v. Nếu bạn muốn nhấn phím bàn phím trên một phần tử web đã chỉ định, thì phần tử web đó trước tiên cần được đặt tiêu điểm một cách rõ ràng, sau đó phương thức này cần được gọi
Đầu tiên, phương thức này tập trung vào phần tử web, phần tử này đã được truyền dưới dạng tham số cho phương thức và nhấn phím được đề cập trên Phần tử web đó
Phương pháp này giải phóng khóa được chỉ định trên Phần tử web hiện được tập trung. Nếu bạn muốn nhả phím bàn phím trên một phần tử web đã chỉ định, thì phần tử web đó trước tiên cần được tập trung một cách rõ ràng, sau đó phương thức này cần được gọi
Phương thức này trước tiên tập trung vào phần tử web, phần tử này được truyền dưới dạng tham số cho phương thức. Sau đó, nó giải phóng khóa được đề cập trên Phần tử web đó Cuối cùng, chúng tôi rõ ràng về tất cả các phương thức cụ thể của bàn phím được cung cấp bởi lớp Hành động. Sau đó, hãy xem cách chúng ta có thể tự động hóa người dùng như kịch bản đã đề cập ở trên bằng cách sử dụng các phương thức được cung cấp bởi lớp Hành động của Selenium WebDriver Hãy sửa đổi đoạn mã được viết ở trên để sử dụng các phương thức của lớp Actions, thay vì sử dụng các phương thức của lớp WebElement
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 Như chúng ta có thể thấy trong ảnh chụp màn hình ở trên, việc sao chép địa chỉ từ trường "Địa chỉ hiện tại " sang trường "Địa chỉ thường trú" đã thành công. Một vài điểm nữa, mà chúng ta nên tập trung rõ ràng vào đoạn mã trên
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?Như đã lưu ý trong các phần trên, tất cả các phương thức của lớp Hành động đã trình bày tóm tắt ở trên chỉ trả về một đối tượng của lớp Hành động. Vì vậy, điều này mang lại cho chúng tôi sự linh hoạt khi sử dụng "Chuỗi phương thức", nơi chúng tôi có thể kết hợp tất cả các lời gọi phương thức cụ thể cho một thao tác chỉ trong một dòng mã Hãy sửa đổi mã được viết ở trên để cắt bớt nó hơn nữa. Chúng tôi sẽ sử dụng Chuỗi phương thức và sẽ xử lý nhiều thao tác Bàn phím liền kề khác nhau trong một lần
Đ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) |