2012-01-07 21 views
8

Tôi muốn mô phỏng người dùng nhấn shift-enter trong vùng văn bản. Dưới đây là đoạn code tôi đang làm việc với:Làm cách nào để gửi hợp âm chính cho vùng văn bản bằng Selenium?

var driver = new FirefoxDriver(); 
driver.Navigate().GoToUrl("http://pagewithtextarea"); 
var textarea = driver.FindElement(By.Id("myTextArea")); 
//Send text 
textarea.SendKeys("hello world!"); 

Nếu tôi muốn mô phỏng cách nhấn nút nhập tôi có thể nói

textarea.SendKeys(Keys.Enter); 

Làm thế nào tôi có thể mô phỏng cách nhấn shift và nhập cùng một lúc?

Trả lời

20

Đơn giản hơn tôi mong đợi. Kể từ SendKeys mất một chuỗi, và hằng tĩnh trên phím là tất cả các chuỗi họ chỉ đơn giản có thể được nối với nhau như thế này:

textarea.SendKeys(Keys.Shift + Keys.Enter); 
+4

Vui vì điều này phù hợp với bạn. Thật không may, điều này không làm việc cho tôi trong IE9 hoặc Chrome: '.SendKeys (Keys.Control +" A ");' Bất kỳ đề xuất? –

+0

Tôi đã hạn chế thành công khi Selenium làm việc hoàn toàn trong IE. Tôi sẽ xem xét cài đặt bảo mật trình duyệt của bạn để xem có điều gì đó ngăn cản Selenium kiểm soát hoàn toàn trình duyệt hay không. –

+3

@BrettVeenstra, bạn có tìm thấy giải pháp cho Chrome không? Tôi có cùng một vấn đề ... – yashaka

-3

Trong Java, Chúng tôi có chord phương pháp, phương pháp này sẽ gửi chuỗi các phím với nhau:

textArea.SendKeys(Keys.chord(Keys.Control , "a")); 

hoặc

textArea.SendKeys(Keys.chord (Keys.Shift,Keys.Enter)); 
0

Nếu có điều gì đó mà bạn có thể làm hơn và hơn, nó có thể là giá trị thực hiện một phương pháp khuyến nông cho nó. Tôi đã làm điều này kể từ .Clear() không hoạt động trong ứng dụng web của chúng tôi vì một số lý do. Thay vì lúc nào cũng gửi một CTRL+A\b, tôi chỉ mở rộng nó với điều này:

public static class ExtensionMethods 
{ 
    public static void Blank(this IWebElement _el) 
    { 
     _el.SendKeys(Keys.Control + "a"); 
     _el.SendKeys("\b"); 
    } 
} 

Sau đó, tôi chỉ cần gọi dynEl.Blank(); và nó hoạt động tuyệt vời.

+1

Cảm ơn ý tưởng này. Tôi đã sửa đổi nó để trả về phần tử để kết hợp các lệnh với nhau. [element] .ClearField(). SendKeys ("Tiêu đề") – camainc

Các vấn đề liên quan