2017-06-14 15 views
6

Chrome 59 có removed support for https://user:[email protected] URLs.Chrome 59 và Xác thực cơ bản với Selenium/Fluentlenium

Tôi có thử nghiệm đang sử dụng tính năng này hiện đã bị hỏng, vì vậy tôi đang cố gắng thay thế bằng phiên bản chờ cửa sổ xác thực và điền vào chi tiết. Nhưng sau không hoạt động trên Chrome (mà không thấy auth bật lên như một cảnh báo):

alert().authenticateUsing(new UserAndPassword("test", "test")); 

Phiên bản selen chỉ có cùng một vấn đề:

WebDriverWait wait = new WebDriverWait(getDriver(), 10);  
Alert alert = wait.until(ExpectedConditions.alertIsPresent());  
alert.authenticateUsing(new UserAndPassword("test", "test")); 

(dựa trên câu trả lời được đưa ra ở đây: How to handle authentication popup with Selenium WebDriver using Java)

Tôi có thể thấy một số cách giải quyết để xử lý điều này trong FireFox, nhưng không có gì cho Chrome. Có cách tiếp cận thay thế nào không?

Trả lời

8

tôi chắc chắn rằng giải pháp Florent B là khả thi, nhưng đối với retro-fitting một thử nghiệm cũ, tôi thấy rằng giải pháp của zoonabar được đăng lên this duplicate question dễ thực hiện hơn, có mã ít hơn đáng kể và không yêu cầu chuẩn bị đặc biệt của hộp kiểm tra. Nó cũng có vẻ là nó sẽ được dễ dàng hơn để làm theo cho các nhà phát triển mới nhìn vào mã.

Tóm lại: truy cập bất kỳ URL nào có bằng chứng xác thực trước khi truy cập URL đang được kiểm tra (không có bằng chứng xác thực) sẽ khiến trình duyệt nhớ thông tin đăng nhập.

goTo("http://user:[email protected]"); // Caches auth, but page itself is blocked 
goTo("http://localhost"); // Uses cached auth, page renders fine 
// Continue test as normal 

Điều này có thể giống như lỗ hổng trong trình duyệt sẽ được vá nhưng tôi nghĩ điều này là không thể; hạn chế đã được áp dụng để tránh các rủi ro lừa đảo (trong đó tên người dùng được chọn giống như tên miền, ví dụ: "http://google.com:[email protected]m/") và cách giải quyết này để đặt thông tin xác thực không có cùng rủi ro.

See zoonabar's answer

0

Over trong https://bugs.chromium.org/p/chromium/issues/detail?id=435547#c33 bạn có thể thấy một mkwst nói là có một lỗi liên quan đến thông tin auth cơ bản và các trang web cùng một nguồn gốc làm cho nó vào ổn định.

Nếu bạn sử dụng "--disable-blink-features = BlockCredentialedSubresources" hoặc truy cập Chrome Canary build, bạn có thể thấy rằng sự cố ban đầu bạn đang gặp không còn xảy ra nữa ...

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