2012-03-19 38 views
6

Làm cách nào để chúng tôi có thể xác minh xem một trường có được bảo vệ chống ghi (có nghĩa là, chỉ đọc) trong Selenium bằng mã Java không?Trình quản lý trang web Selenium - xác minh hộp văn bản được bảo vệ chống ghi?

Trân trọng

+0

có thuộc tính trong html cho biết hộp được bảo vệ không? – Tarken

+1

yea- có một trường được gọi là 'chỉ đọc'. chi tiết sau đây dành riêng cho trường này ---- ABCDEFG

Trả lời

4

Bạn có thể thử viết một cái gì đó qua sendkeys() và kiểm tra xem giá trị thuộc tính của hộp chưa được thay đổi.

+1

Cảm ơn tất cả những câu trả lời này. bằng cách nào đó tôi đã thử nghiệm tất cả những ý tưởng này và tôi đã thực hiện một ý tưởng đã chọn. Tên người dùng WebElementElement = driver.findElement (By.id ("tên người dùng")); usernameElement.sendKeys ("SampleText"); – ABCDEFG

3

Giao diện WebElement có chức năng được gọi là isEnabled.

+0

isEnabled không giống như kiểm tra nếu nó là chỉ đọc – Thayne

0

Vì tôi không biết những gì bạn cần kiểm tra, tôi sẽ đăng một số ví dụ có thể hữu ích.

driver.findElements(By.cssSelector("input:not([readonly='readonly'])[type='text']")); 

=> trả về tất cả các lĩnh vực đầu vào văn bản có thể chỉnh sửa

WebElement element = driver.findElement(By.id("username"); 
//can fail if the attribute is not there 
String attribute = element.getAttribute("readonly"); 

=> có thể cần một khối try catch

+0

làm thế nào để viết cho selenium RC? –

+0

không thể giúp bạn với điều đó tôi chỉ sử dụng webdriver và grid2 – Tarken

+0

Đó là Ok :-). Cảm ơn :-)). tôi đã nhận được giải pháp –

1

với selen-java 2.21.0 bạn có thể kiểm tra nếu được kích hoạt nó

driver.findElement(By.id("...")).isEnabled() 
12
  1. là Đã bật() không có bất kỳ thứ gì phổ biến để chỉ đọc.
  2. Thuộc tính chuỗi = element.getAttribute ("chỉ đọc"); sẽ không làm hỏng bài kiểm tra của bạn ngay cả khi "chỉ đọc" vắng mặt. Trong trường hợp này, nó trả về null, nhưng chúng tôi cần ngoại lệ.

Sử dụng như thế này:.

WebElement some_element = driver.findElement(By.id("some_id")); 
    String readonly = some_element.getAttribute("readonly"); 
    Assert.assertNotNull(readonly); 

ĐỪNG xác minh getAttribute ("readonly") equals ("true") hoặc tương tự, trong các trình duyệt khác nhau nó có thể khác nhau là tốt. (chỉ đọc = "chỉ đọc" trong IE, chỉ đọc = "" trong FF, v.v.)

0

Dưới đây là Mã hoạt động tốt nhất cho tôi. Hy vọng điều này sẽ hữu ích

WebElement fieldName = driver.findElement(By.id("enter_id")); 
    fieldName.sendKeys("abc"); 
    String fieldNameVal = fieldName.getAttribute("value"); 
    if(fieldNameVal.contentEquals("abc")){ 
    System.out.println("Field is editable"); 
    } 
    else{ 
    System.out.println("Field is non editable" + fieldNameVal); 
    } 
1

Đây là câu trả lời muộn nhưng vì tôi đang làm việc về điều này gần đây, tôi muốn chia sẻ giải pháp của mình.

Tôi đã triển khai phương pháp để kiểm tra xem hộp văn bản có chỉ đọc hay không. Tôi đang làm việc trên một dự án Django để mã là bằng Python, nhưng tôi tin rằng đó là dễ dàng đến cổng nó để Java:

from django.contrib.staticfiles.testing import StaticLiveServerTestCase 

class MyTest(StaticLiveServerTestCase): 

    def setUp(self): 
     self.browser = webdriver.Firefox() 

    def _is_text_box_read_only(self, web_element): 
     old_text = web_element.get_attribute("value") 
     web_element.send_keys("test") 
     new_text = web_element.get_attribute("value") 
     web_element.clear() 
     web_element.send_keys(old_text) # Resume to the previous text 
     return old_text == new_text 

Lưu ý rằng:

  1. Bạn cần phải sử dụng thuộc tính value để nhận được văn bản đã nhập.
  2. Tốt hơn để tiếp tục lại văn bản trước đó sau khi thử nghiệm.
  3. Mã chỉ là một đoạn trích cho thấy các ý tưởng cốt lõi. Nó có thể không chạy được.
Các vấn đề liên quan