2012-10-05 50 views
10

Tôi đã viết một bài kiểm tra nUnit bằng cách sử dụng selen trong C#.Selenium C# chấp nhận hộp xác nhận

Tất cả đều diễn ra tốt đẹp cho đến khi tôi phải xác nhận hộp xác nhận JS.

đây là mã Tôi đang sử dụng:

this.driver.FindElement(By.Id("submitButton")).Click(); 
this.driver.SwitchTo().Alert().Accept(); 

Hộp xác nhận xuất hiện sau khi nút gửi. Xác nhận xuất hiện và sau đó biến mất ngay lập tức nhưng biểu mẫu không gửi. Hành vi này giống nhau bất kể dòng accept() ở trên.

Tôi đang sử dụng Firefox v15.0.1 và selen v2.24

Tôi đã thử đặt một Thread.Sleep giữa nộp nhấp chuột và xác nhận chấp nhận.

Mọi thứ tôi đã đọc đều nói rằng trình điều khiển selen sẽ tự động gửi xác nhận OK, nhưng có điều gì đó khác đang xảy ra.

+0

đó là lỗi của tôi, không có lỗi. Tôi đã nhìn vào nút gửi sai trong bài kiểm tra của tôi :(Lỗi hoàn thành Lập trình viên Giải pháp được chấp nhận bên dưới vì đó là cách đúng để chọn hộp cảnh báo. –

Trả lời

11

trong vấn đề này tôi sẽ cố gắng xác minh sự hiện diện của hộp xác nhận. giống như sau:

this.driver.FindElement(By.Id("submitButton")).Click(); 


boolean presentFlag = false; 

    try { 

    // Check the presence of alert 
    Alert alert = driver.switchTo().alert(); 
    // Alert present; set the flag 
    presentFlag = true; 
    // if present consume the alert 
    alert.accept(); 

    } catch (NoAlertPresentException ex) { 
    // Alert not present 
    ex.printStackTrace(); 
    } 

    return presentFlag; 

} 

thì nếu không hoạt động. cố gắng gỡ lỗi từng bước một. một số bổ sung thông tin liên quan đến cảnh báo (xác nhận hộp) xử lý trong selen here niềm hy vọng này bằng cách nào đó giúp bạn

0

Điểm cuối tôi kiểm tra không có thời gian đáp ứng đáng tin cậy và cách duy nhất tôi có thể làm cho nó luôn luôn làm việc với selen webdriver -dotnet-2.33.0 (.NET4) sử dụng Firefox là bằng cách làm như sau:

private void acceptAlert(){ 
string alertText = ""; 
IAlert alert = null; 
while (alertText.Equals("")){ 
if (alert == null) 
{ 
try{ 
alert = driver.SwitchTo().Alert(); 
} 
catch{ 
System.Threading.Thread.Sleep(50); } 
} 
else{ 
try{ 
alert.Accept(); 
alertText = alert.Text; 
} 
catch (Exception ex){ 
if (ex.Message.Equals("No alert is present")) alertText = "Already Accepted"; 
else System.Threading.Thread.Sleep(50); 
} 
} 
} 
} 
6

Bạn chỉ cần:

IAlert alert = driver.SwitchTo().Alert(); 
alert.Accept(); 
Các vấn đề liên quan