2010-02-12 29 views
9

Dường như không có mã nào tôi đã thử có bất kỳ ảnh hưởng nào. Ý định của tôi là đóng bất kỳ và tất cả các lời nhắc JavaScript có thể xuất hiện bằng cách nhấn nút "OK". Vấn đề là, kịch bản của tôi không ảnh hưởng đến lời nhắc đến. Nói cách khác, nó không làm gì cả.Ruby Watir: Nhấp vào OK trên Cảnh báo JavaScript?

Dưới đây là những gì tôi có:

fx = FireWatir::Firefox.start(somepage) 
fx.startClicker("OK") 
fx.button(:id, "OK").click 
fx.button(:id, "CONFIRM").click 

HTML:

<script type="text/javascript"> 
    alert("Alert!"); 
    window.confirm("Confirm?"); 
</script> 

Các văn bản trong các hướng dẫn có thể thay đổi, mục đích của tôi là để nhấn OK bất kể những gì là bên trong cảnh báo/xác nhận nhanh chóng .

PS: Tôi đang chạy Ubuntu.

Trả lời

6

Cách tốt nhất là ngăn cửa sổ bật lên kích hoạt.

require 'watir' 
b = Watir::Browser.start "http://somepagewithdialogs" 
# don't return anything for alert 
b.execute_script("window.alert = function() {}") 

# return some string for prompt to simulate user entering it 
b.execute_script("window.prompt = function() {return 'my name'}") 

# return null for prompt to simulate clicking Cancel 
b.execute_script("window.prompt = function() {return null}") 

# return true for confirm to simulate clicking OK 
b.execute_script("window.confirm = function() {return true}") 

# return false for confirm to simulate clicking Cancel 
b.execute_script("window.confirm = function() {return false}") 

# interact with some element which would trigger the pop up 
b.button(:id => "dialogTrigger").click 

Xem: http://watirmelon.com/2010/10/31/dismissing-pesky-javascript-dialogs-with-watir/ để biết thêm chi tiết.

0

Pop up là ma thuật đen đối với tôi. Bạn đã thử các giải pháp từ đây?

Tôi cũng xin đề nghị đăng câu hỏi của bạn tại watir-general.

+0

Sử dụng giải pháp # 3 đã làm việc cho tôi trong liên kết thứ hai aboveeljko ở trên. Tôi đã sửa đổi phương thức startClicker một chút để lấy tham số biến trình duyệt, nhưng đây là một tham số cuối cùng đã làm việc. –

0

Tôi nghĩ rằng fx.button của bạn (: id, "OK") .nhấp chuột là trạng thái chờ đã thay đổi.
Nhưng hộp thoại javascript không thay đổi trạng thái.
Vì vậy, watir của bạn sẽ chờ đợi mãi mãi.
Nếu không thích điều đó, tôi không biết.

Hành động sẽ không thay đổi trạng thái, không bao giờ trả lại.
Vì vậy, nó cần bấm không chờ đợi.
Khi tôi sử dụng watir (không phải firewatir), @ ie.button (: id, 'OK'). Click_no_wait.
Sau đó, chờ hơn 1 ~ 3 giây để bật lên.
Sau đó, như bạn muốn.
Và hơn nữa nếu bạn muốn điều khiển msg-box (popup), cần phải AutoIT. --This là mẫu cho chờ đợi msg-box và kích OK cho IE popup--

autoit=WIN32OLE.new('AutoItX3.Control') 
autoit.WinWait('Windows Internet Explorer') 
autoit.WinActive('Windows Internet Explorer') 
autoit.ControlClick('Windows Internet Explorer','','OK') 

Có thể là hoàn toàn tôi không hiểu những gì bạn có ý nghĩa. Nếu bỏ qua điều này.

0

Kiểm tra /var/lib/gems/1.8/gems/firewatir-1.6.5/unittests/html/JavascriptClick.html (giả sử đó là nơi đá quý firewatir của bạn được cài đặt). Tôi chạy thử nghiệm và nó đã làm việc cho tôi. Có thể đọc bài kiểm tra sẽ cung cấp cho bạn một số thông tin chi tiết về cách startClicker được cho là hoạt động.

0

này đã được hỏi một cõi đời đời trước vì vậy tôi chỉ cần thêm một chút gì đó cập nhật hơn nữa mà đã làm nó cho tôi

@browser.alert.exists? @browser.alert.ok @browser.alert.close

đầu tiên sẽ trả về một boolean thứ hai sẽ ok bất kỳ hành động nào bạn được nhắc làm và hành động thứ ba sẽ đóng cảnh báo không có

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