2012-10-05 12 views
10

मैंने C# में सेलेनियम का उपयोग करके एक nnnit परीक्षण लिखा है।सेलेनियम सी # स्वीकृति बॉक्स

तब तक सभी ठीक चल रहे थे जब तक कि मुझे एक जेएस पुष्टिकरण बॉक्स की पुष्टि नहीं करनी पड़े।

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

पुष्टि बॉक्स सबमिट बटन के बाद प्रकट होता है:

यहाँ कोड मैं का उपयोग कर रहा है। पुष्टि प्रकट होती है और फिर तुरंत गायब हो जाती है लेकिन फॉर्म सबमिट नहीं होता है। उपरोक्त स्वीकृति() रेखा के बावजूद व्यवहार समान है।

मैं फ़ायरफ़ॉक्स v15.0.1 और सेलेनियम v2.24 उपयोग कर रहा हूँ

मैं प्रस्तुत क्लिक करके सुनिश्चित करें स्वीकार जो Thread.Sleep डालने की कोशिश की है।

मैंने जो कुछ भी पढ़ा है, उसने कहा है कि सेलेनियम ड्राइवर स्वचालित रूप से एक पुष्टि ठीक भेज देगा, लेकिन कुछ और हो रहा है। इस समस्या में

+0

यह मेरी अपनी गलती है, वहाँ कोई बग है। मैं अपने परीक्षण में गलत सबमिट बटन देख रहा था :(। पूर्ण प्रोग्रामर त्रुटि नीचे स्वीकृत समाधान क्योंकि यह अलर्ट बॉक्स का चयन करने का सही तरीका है। –

उत्तर

11

मैं पुष्टि बॉक्स उपस्थिति को सत्यापित करने का प्रयास करूंगा। यह हो कुछ की तरह:

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; 

} 

फिर अगर doen't काम करते हैं। कदम से कदम डीबग करने का प्रयास करें। कुछ अतिरिक्त जानकारी के विषय में चेतावनी (बक्से की पुष्टि) सेलेनियम में संभाल here आशा है कि यह किसी भी तरह मदद करता है

0

अंत बिंदु मैं कर रहा हूँ परीक्षण विश्वसनीय प्रतिक्रिया समय और एक ही रास्ता मैं यह हमेशा webdriver सेलेनियम के साथ काम करने के लिए मिल सकता है नहीं है -dotnet-2.33.0 (.NET4) Firefox का उपयोग कर निम्न कार्य करके किया गया था:

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

तुम बस जरूरत है:

IAlert alert = driver.SwitchTo().Alert(); 
alert.Accept(); 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^