मेरे पास सी # में लिखा गया एक एप्लीकेशन है, यह किसी वेबपृष्ठ पर कुछ टेक्स्टबॉक्स भरता है। (क्रोम)

मैंने इसमें एक मूल ErrorHandler लागू किया है। त्रुटि लॉग करने के बाद मैं पृष्ठ को रीफ्रेश करना चाहता हूं।

लेकिन क्रोम में एक Changes you made may not be saved. संकेत है इसलिए मैं पृष्ठ को स्वचालित रूप से रीफ्रेश नहीं कर सकता। मैंने निम्नलिखित तर्कों का प्रयास किया है लेकिन उनमें से कोई भी काम नहीं किया है:

ChromeOptions options = new ChromeOptions();
options.AddArguments("--disable-notifications");
options.AddArguments("--disable-popup-blocking");

मेरे पास पूरे सेलेनियम वेबड्राइवर इंस्टेंस को एक अलग वर्ग में रखने का विचार है (वर्तमान में यह मुख्य रूप में है) इसलिए मैं इसे एररहैंडलर क्लास से भी पहुंचा सकता हूं ताकि अगर कोई त्रुटि हो तो मैं ड्राइवर को छोड़ सकता हूं और इसे फिर से खोल सकता हूं।

लेकिन मुझे कोई सी # समाधान नहीं मिला।

क्या आप इस मामले में मेरी मदद कर सकते हैं? धन्यवाद!

1
Robee 23 पद 2019, 16:44

1 उत्तर

सबसे बढ़िया उत्तर

आप जो वर्णन कर रहे हैं वह एक अलर्ट पॉपअप की तरह लगता है जो पेज रीफ्रेश में बाधा डालता है -- आपको Alerts वर्ग का उपयोग करके इसे अलर्ट के रूप में संभालने की आवश्यकता हो सकती है। सी # में ऐसा करने का तरीका यहां दिया गया है:

// attempt to refresh
driver.Navigate().Refresh();

// handle the alert & continue with the page refresh
driver.SwitchTo().Alert().Accept();

आपको पहले अलर्ट पर WebDriverWait का आह्वान करना पड़ सकता है:

// attempt to refresh
driver.Navigate().Refresh();

// wait for the alert to exist, then handle it and continue with refresh
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));

var alert = wait.Until(ExpectedConditions.AlertIsPresent());
alert.Accept();

ध्यान दें कि ExpectedConditions अब .NET के लिए सेलेनियम नेमस्पेस में अप्रचलित है, इसलिए आपको इस वर्ग को सुरक्षित रूप से एक्सेस करने के लिए NuGet पैकेज, DotNetSeleniumExtras.WaitHelpers जोड़ना होगा। WebDriverWait अभी भी OpenQA.Selenium.Support.UI नाम स्थान में समाहित है।

4
Christine 23 पद 2019, 18:58