मैं वर्तमान में InternetExplorerDriver का उपयोग कर एएसपी.नेट एमवीसी अनुप्रयोग के खिलाफ सेलेनियम 2/वेबड्राइवर का उपयोग कर अवधारणा के सबूत में सहायता कर रहा हूं।सेलेनियम 2/वेबड्राइवर का उपयोग करके मैं जावास्क्रिप्ट अलर्ट का भरोसेमंद इंतजार कैसे कर सकता हूं?
एप्लिकेशन उन उपयोगकर्ताओं को सूचित करने के लिए मानक पैटर्न का उपयोग करता है जो रिकॉर्ड सहेजा गया है। यह TempData सेटिंग्स द्वारा काम करता है "रिकॉर्ड सफलतापूर्वक सहेजा गया", और यदि टेम्प में डेटा टेम्पेट मौजूद है, तो दृश्य संदेश को सतर्क करेगा।
इस कार्यशीलता के लिए सेलेनियम परीक्षण पर काम कर रहा जबकि, हम सी नीचे #/सेलेनियम परीक्षण कोड से inconstitant व्यवहार प्राप्त कर रहे हैं:
_driver.Navigate().GoToUrl(_baseUrl + "/Amraam/List");
_driver.FindElement(By.LinkText("Create New")).Click();
_driver.FindElement(By.Id("txtAmraamSerialNumber")).SendKeys("CC12345");
var selectElement = new SelectElement(_driver.FindElement(By.Id("LocationId")));
selectElement.SelectByText("Tamworth");
_driver.FindElement(By.Id("btnSave")).Click();
var wait = new WebDriverWait(_driver, defaultTimeout);
IAlert alert = wait.Until(drv => drv.SwitchTo().Alert());
_alertText = alert.Text;
alert.Accept();
Assert.That(_alertText, Is.EqualTo("Record successfully saved"));
लगभग 50% बार, Selinium एक
साथ विफल हो जाएगा OpenQA.Selenium.NoAlertPresentException: कोई चेतावनी सक्रिय नहीं है
मैं इस मुद्दे को दोहराने के लिए एक सटीक तरीका खोजने के लिए संघर्ष करता हूं, और असंगतता पहलू के बारे में चिंता करता हूं। यदि यह लगातार विफल रहा है, तो हम समस्या को डीबग और ट्रैक कर सकते हैं।
चीयर्स बन जाएगा। असल में, आगे काम करते हुए, हमने पाया कि यह वास्तव में सेलेनियम के साथ एक समस्या नहीं थी, लेकिन वास्तव में हमारे आवेदन के तहत परीक्षण के साथ, और बटन पर जावास्क्रिप्ट घटनाओं का ऑर्डर करने के लिए क्लिक करें (पूछो मत ...) किसी भी तरह से, सेलेनियम खुद ही व्यवहार कर रहा था । @Naishy, आपकी प्रतिक्रिया बहुत अच्छी लगती है, और हम इसे अन्यथा कोशिश करेंगे - चीयर्स। –
आप उस अंतिम पंक्ति को थोड़ा और संक्षिप्त बनाने के लिए विधि समूह वाक्यविन्यास का उपयोग कर सकते हैं; 'IAlert चेतावनी = प्रतीक्षा करें। जब तक (अलर्ट IsPresent);'। –
अब आप ExpectedCondition.AlertIsPresent का उपयोग कर सकते हैं देखें: http://stackoverflow.com/a/24550934/200824 –