2013-02-19 31 views
7

Khi tôi mở một trang bằng trình quản trị web selenium, tôi nhận được hộp thoại chrome "Chọn chứng chỉ". Chứng chỉ mặc định là đúng, vì vậy tôi chỉ phải bấm nút OK. Nhưng tôi có vấn đề với điều này. Tôi có mã python:Xử lý 'chọn chứng chỉ kỹ thuật số' với trình duyệt web selenium chrome

drv = webdriver.Chrome() 
drv.get("https://example.com/login") 

và sau đó tôi muốn làm một cái gì đó như:

drv.switch_to_alert().accept() 

hoặc

drv.switch_to_alert().send_keys(Keys.TAB) 
drv.switch_to_alert().send_keys(Keys.SPACE) 

Vấn đề là rằng mã ngừng thực hiện trên dòng drv.get ("https://example.com/login"). Trình điều khiển web đang chờ tải trang. Và trước dòng đó không có hộp thoại chrome.

Tôi làm cách nào để xử lý việc này?

Trả lời

3

Bạn sẽ phải sử dụng một cái gì đó giống như AutoIt:

http://www.autoitscript.com/site/autoit/

Tại sao bạn yêu cầu? Đó là một hộp thoại hệ điều hành, mà Selenium không và có lẽ sẽ không bao giờ xử lý, vì vậy bạn sẽ phải chuyển sang các giải pháp khác (trong C# bạn nên sử dụng các phương thức Win32 API riêng để nhấn vào nút chẳng hạn).

+1

và bạn làm gì trên Linux? –

1

Chứng chỉ được quản lý bởi HĐH chứ không phải trình duyệt. Xóa tất cả trừ chứng chỉ cần thiết từ kho lưu trữ chứng chỉ của trình duyệt và sau đó định cấu hình trình duyệt để tự động chọn chứng chỉ khi chỉ có một chứng chỉ. Bạn cũng có thể tạo hồ sơ trình duyệt và để chương trình của bạn khởi chạy tiểu sử này hoặc tránh thử nghiệm qua HTTPS.

+2

cách bạn định cấu hình chrome để chấp nhận chứng chỉ mặc định mà không hỏi? –

1

trước khi xử lý mọi thứ ở đây, thêm bên dưới để nó sẽ không bị đóng băng ngay khi bạn điều hướng/kích hoạt chứng chỉ bật lên. hãy nhớ thêm lại thời gian chờ chính xác sau.

getDriver().manage().timeouts().pageLoadTimeout(1000, TimeUnit.MILLISECONDS); 

sau này, bạn có thể thử sử dụng bàn phím hoặc tự độngTất cả mọi thứ.

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