2010-10-29 49 views

Trả lời

18

Tôi phải đối mặt với tình huống tương tự này trước khi src của hình ảnh như mong đợi nhưng hình ảnh không được hiển thị trên trang.

Bạn có thể kiểm tra xem hình ảnh có được hiển thị hay không bằng cách sử dụng Trình kiểm tra JavaScript.

Sử dụng đoạn mã sau - Vượt qua WebElement (hình ảnh) -

Object result = ((JavascriptExecutor) driver).executeScript(
    "return arguments[0].complete && "+ 
    "typeof arguments[0].naturalWidth != \"undefined\" && "+ 
    "arguments[0].naturalWidth > 0", image); 

    boolean loaded = false; 
    if (result instanceof Boolean) { 
     loaded = (Boolean) result; 
     System.out.println(loaded); 
    } 

Bạn có thể kiểm tra xem các hình ảnh đã thực sự nạp trên trang web bằng cách làm này.

+1

Cảm ơn bạn, tôi đã không mong đợi bất cứ ai sẽ đăng giải pháp làm việc sau nhiều tháng này. Tôi đã kết thúc bằng cách sử dụng mã này để kiểm tra xem tất cả các hình ảnh có xuất hiện trên trang không: 'var elems = document.getElementsByTagName (" img "); var allOk = true; cho (var i = 0; i 0; log (elems [i] .naturalWidth);} allOk; '. –

+0

Chào mừng bạn. Vui vì nó đã giải quyết được vấn đề của bạn. –

+0

Công việc tuyệt vời! Một lưu ý: các nhà phát triển của chúng tôi có hình ảnh trình giữ chỗ là 400px và họ trao đổi hình ảnh đó với hình ảnh được tải xuống khi bạn cuộn đến hình ảnh đó. Vì vậy, thử nghiệm cuối cùng, đối với tôi, là 'đối số [0] .naturalWidth! = 400'. Kiểm tra với các nhà phát triển của bạn để được trợ giúp. – SiKing

0

Bạn chắc chắn có thể kiểm tra xem hình ảnh có xuất hiện trong nguồn trang hay không, ví dụ: bằng cách sử dụng tham số XPath.

Bạn có thể giả định rằng vì nó nằm trong nguồn trang, nó sẽ được hiển thị nhưng tôi không biết cách nào để thực sự xác thực điều này.

+0

Có tình huống, khi trang thư viện được tạo không sao, nhưng bản thân hình ảnh không hợp lệ - ví dụ do ngoại lệ trong tập lệnh hình ảnh. –

1

Nếu bạn sẵn sàng sử dụng giao diện TestPlan cho Selenium, có một vài tùy chọn. Khi bạn có URL của hình ảnh, bạn có thể lấy URL này và kiểm tra các tiêu đề được trả lại. bạn cũng có thể lưu dữ liệu vào một tệp nếu bạn muốn kiểm tra thủ công nó. Hoặc bạn có thể viết trình xác nhận hợp lệ trong Java để lấy dữ liệu đó và kiểm tra xem liệu nó có thực sự giải mã hay không.

Nếu bạn sẵn sàng dùng thử, tôi sẽ viết cho bạn một kịch bản mẫu. Tôi thậm chí có thể làm một chức năng xác nhận hình ảnh nhanh chóng nếu bạn muốn.

+0

Phần mềm này có vẻ thú vị, nhưng tôi bị ràng buộc sử dụng Bromine fron-end. Công ty chúng tôi đã dành một số giờ làm việc tùy biến nó và bán phá giá công việc đó chỉ vì việc thử nghiệm hình ảnh là không khả thi. Cảm ơn các mẹo mặc dù. –

2

Nếu bạn đang sử dụng Java, selen có phương thức có tên là eval hoặc hơn. Bạn cho nó một chuỗi javascript và nó cho bạn kết quả như một chuỗi. Ví dụ: bạn có thể thử điều này (trong một dòng):

var req = new XMLHttpRequest(); 
req.open('get', document.getElementById('imageid').src, false); 
req.send(null); 
req.status==200 

Điều này sẽ trả về "true" cho trạng thái 200 hoặc "false" cho một mục khác.

+0

Phải làm gì nếu hình ảnh không có ID? Hình ảnh có tên và lớp học - Phải làm gì trong trường hợp đó? –

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