मैं ब्राउज़र क्रियाओं के कुछ स्वचालन करने के लिए विंडोज 10 सिस्टम पर सेलेनियम वेबड्राइवर और पायथन का उपयोग करने का प्रयास करता हूं। लेकिन मुझे यह समस्या है: सेलेनियम-शुरू की गई फ़ायरफ़ॉक्स विंडो "देखती" नहीं है कि मैं पहले से ही लॉग इन हूं और लक्ष्य साइट मुझे लॉगिन पेज पर भेजती है। तो मैंने मान लिया कि सेलेनियम वास्तव में प्रोफ़ाइल का उपयोग नहीं करता है, बल्कि इसकी एक प्रति है।

मेरी जानने की इच्छा है:

  1. क्या प्रोफाइल की कॉपी के वास्तविक उपयोग के बारे में मेरा निष्कर्ष सही है?
  2. यदि 1. सत्य है, तो क्या मौजूदा प्रोफ़ाइल से वास्तव में सब कुछ उपयोग करने का कोई तरीका है?
  3. यदि मेरा निष्कर्ष सत्य नहीं है, तो कृपया इसे साबित करें और मुझे उस दिशा में इंगित करें जहां मुझे पता चल सके कि सत्र के लिए कौन सी जानकारी का उपयोग किया जा सकता है, सेलेनियम इसे भेजने में विफल क्यों हो सकता है और इसे वास्तव में ऐसा करने के लिए कैसे मजबूर किया जा सकता है।

संपादित करें:

from selenium import webdriver
fp = webdriver.FirefoxProfile('C:/Users/<user name>/AppData/Roaming/Mozilla/Firefox/Profiles/abc3defghij2.ProfileName')
driver = webdriver.Firefox(fp)
driver.get("https://www.example.com/membersarea")
20
svgrafov 16 मई 2016, 08:38
क्या आप किसी सहेजी गई प्रोफ़ाइल या ब्राउज़र को स्क्रिप्ट में कॉल कर रहे हैं? कृपया कोड प्रदान करें
 – 
murali selenium
16 मई 2016, 08:54
आप सेलेनियम को "पता लगाने" के लिए क्यों चाहते हैं कि आप पहले ही लॉग-इन कर चुके हैं, जब आप "बिल्कुल नया" सत्र मान सकते हैं, और सेलेनियम के माध्यम से लॉगिन कर सकते हैं?
 – 
barak manos
16 मई 2016, 11:37
मैंने इसी तरह के कार्य के लिए सेलब्लॉक के साथ सेलेनियम आईडीई का उपयोग किया, लेकिन ऐसा लगता है कि मैं इसकी सीमाओं में से एक से मिला हूं - मुझे लॉग इन करते समय एक पृष्ठ से जानकारी प्राप्त करने की आवश्यकता है और लॉग इन नहीं है। जहां तक ​​मुझे पता है, सेलेनियम आईडीई के साथ मैं निजी खोल सकता हूं जावास्क्रिप्ट का उपयोग कर विंडो, लेकिन इसके साथ काम नहीं कर सकता।
 – 
svgrafov
16 मई 2016, 12:15

1 उत्तर

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

सेलेनियम वास्तव में प्रोफ़ाइल की एक प्रति का उपयोग करता है, हालांकि इससे कोई समस्या नहीं होनी चाहिए। मुझे लगता है कि आपकी समस्या सत्र कुकीज़ बनाम लगातार कुकीज़ के साथ अधिक है।

support.mozilla.org एक सूची है जो दर्शाती है कि वास्तव में आपकी प्रोफ़ाइल में कौन सी जानकारी संग्रहीत है। ध्यान दें कि कुकीज़ इनमें से हैं, हालांकि session-cookies कोookies.sqlite में संग्रहित नहीं किया जाता है, जो यही कारण है कि सेलेनियम आपके सत्र का पुनर्निर्माण नहीं कर सकता क्योंकि यह प्रोफ़ाइल में प्रकट नहीं होता है।

हालाँकि, कई साइटें अपने लॉगिन पृष्ठ पर एक remember-me या एक stay-logged-in विकल्प प्रदान करती हैं, जिसका यदि उपयोग किया जाता है, तो यह एक स्थायी कुकी को संग्रहीत करेगा जिसके द्वारा सत्र को पुनर्स्थापित किया जा सकता है। मैंने जीमेल के साथ इसका परीक्षण करने के लिए निम्न स्क्रिप्ट का उपयोग किया,

from selenium import webdriver

url = "https://mail.google.com"
fp = webdriver.FirefoxProfile('/Users/<username>/Library/Application Support/Firefox/Profiles/71v1uczn.default')

driver = webdriver.Firefox(fp)
driver.get(url)

जब मैं stay-logged-in विकल्प सक्षम के साथ जीमेल में लॉग इन करने के बाद इस स्क्रिप्ट को चलाता हूं, तो सेलेनियम मेरे इनबॉक्स तक पहुंचने में सक्षम होता है। यदि stay-logged-in विकल्प सक्षम नहीं है तो मेरे ब्राउज़र को बंद करने पर सत्र नष्ट हो जाता है और इस प्रकार सेलेनियम इसे पुनर्स्थापित भी नहीं कर सकता है।

नीचे दिया गया स्क्रीनशॉट दिखाता है कि सत्र कुकीज़ वास्तव में कुकीज़.स्क्लाइट में संग्रहीत नहीं हैं और इस प्रकार सेलेनियम द्वारा उपयोग किए जाने पर प्रोफ़ाइल में दिखाई नहीं देती हैं।

Firefox cookies in cookies.sqlite and firebug

20
sowa 18 मई 2016, 23:08
जवाब के लिए धन्यवाद! हालांकि, मुझे जीमेल पेज पर stay-logged-in विकल्प नहीं मिला, क्या इसे हटा दिया गया है?
 – 
skhalymon
13 अगस्त 2018, 18:13
5
आप फ़ायरफ़ॉक्स में about:support का उपयोग करके अपना सक्रिय प्रोफ़ाइल-फ़ोल्डर ढूंढ सकते हैं
 – 
Skandix
24 अक्टूबर 2018, 15:27
यह आप का बहुत अच्छा है
 – 
hoymkot
4 जुलाई 2021, 02:48