20

क्रोम 59 removed support for https://user:[email protected] URLs पर एसएएमएल संवाद।सेलेनियम क्रोम 60 हेडलेस हैंडल बेसिक प्रमाणीकरण एचटीटीपीएस

मैं एक सी # सेलेनियम परीक्षण Chrome Version 60 on Windows in 'headless' mode

ChromeOptions options = new ChromeOptions(); 
options.AddArgument("headless"); 
driver = new ChromeDriver(chrome, options); 

यहाँ के साथ काम करने की जरूरत है कि है SAML प्रमाणीकरण आवश्यक संवाद मैं विंडोज पर संभाल करने के लिए कोशिश कर रहा हूँ है: Basic Auth Dialog

यहाँ दी जवाब के आधार पर : How to handle authentication popup with Selenium WebDriver using Java) मैं फ़ायरफ़ॉक्स में इसे संभालने के लिए कई कामकाज देख सकता हूं, लेकिन हेडलेस मोड में क्रोम 60 के लिए कुछ भी नहीं।

मैं परीक्षण के अंतर्गत यूआरएल (साख) के बिना जाने से पहले पहचान के साथ एक URL पर जाकर के लिए निम्न कोड की कोशिश की है लेकिन ऐसा लगता है वहाँ है क्रोम के साथ एक bug 60.

goTo("http://user:[email protected]"); // Caches auth, but page itself is blocked 
goTo("http://localhost"); // Uses cached auth, page renders fine 
// Continue test as normal 

मैं निम्नलिखित देख सकते हैं फ़ायरफ़ॉक्स में कोड प्रमाणीकरण संभालती है और संवाद कभी नहीं खुलेगी:

FirefoxProfile profile = new FirefoxProfile(); 
profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "https://saml.domain.com"); 
profile.EnableNativeEvents = false;` 

मैं दूसरा दृष्टिकोण (using AutoIt) की कोशिश की है और कहा कि क्रोम 60 लेकिन पर काम करता है es क्रोम 60 पर हेडलेस मोड में काम करता है।

//Use AutoIt to wait 4 seconds for the authentication required dialog to appear 
au3.Sleep(4000); 
//Use AutoIT to send in the credentials from app.config that are encrypted 
au3.Send(USERNAME + "{TAB}" + PASSWORD + "{ENTER}"); 
//Refresh the page 
driver.Navigate().Refresh(); 

मैं आशा करता हूं एक बेहतर समाधान 2017 में अब वहाँ है और वहाँ एक दृष्टिकोण है कि नेतृत्वहीन मोड में Chrome 60 के साथ काम करेंगे, किसी भी संकेत दिए गए है?

बस स्पष्ट होना: embedded credentials का उपयोग करने का प्रयास क्रोम v59 + का उपयोग करके काम नहीं करेगा क्योंकि उप-संसाधन अनुरोध अवरुद्ध किए जाएंगे।

+0

[पाइथन सेलेनियम अलर्ट का संभावित डुप्लिकेट - प्रॉम्प्ट उपयोगकर्ता नाम और पासवर्ड काम नहीं कर रहा है] (https://stackoverflow.com/questions/45328654/python-selenium-alert-prompt-username-password-is-not-working) – DebanjanB

+1

आप इसे देख सकते हैं [** प्रश्न/चर्चा/थ्रेड **] (https://stackoverflow.com/questions/45345882/selenium-other-way-to-basic-authenticate-than-via-url/45352660?noredirect = 1 # टिप्पणी77716943_45352660) साथ ही साथ। – DebanjanB

+0

सेलेनियम परीक्षण चलाते समय भी मुझे क्रोम में लॉगिन प्रॉम्प्ट मिलता है। और दोनों सुझाव विंडोज 60 पर हेडलेस मोड में क्रोम 60 के साथ काम नहीं करते हैं। – IanC

उत्तर

0

शायद आप setHequestHeader विधि का उपयोग कर XMLHttpRequest का उपयोग कर पिछला कनेक्शन कर सकते हैं ताकि आप प्रमाणीकरण शीर्षलेख निर्दिष्ट कर सकें। एक ही अनुरोध करने के बाद आपको अन्य सभी प्रकार के अनुरोधों के लिए प्रमाणित किया जाएगा। बड़ी समस्या XSS हो सकती है, आपके परिदृश्य के आधार पर आप शायद इसे काम कर सकते हैं।

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