Python'un Selenium WebDriver'daki tüm tanımlama bilgilerini bir txt dosyasına nasıl kaydedip daha sonra yükleyebilirim? Belgeler getCookies işlevi hakkında pek bir şey söylemiyor.
Python'un Selenium WebDriver'daki tüm tanımlama bilgilerini bir txt dosyasına nasıl kaydedip daha sonra yükleyebilirim? Belgeler getCookies işlevi hakkında pek bir şey söylemiyor.
Yanıtlar:
Mevcut çerezleri turşu kullanarak bir python nesnesi olarak kaydedebilirsiniz. Örneğin:
import pickle
import selenium.webdriver
driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))
ve daha sonra onları tekrar eklemek için:
import pickle
import selenium.webdriver
driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
drive.add_cookie
tekrar denediğimde "son kullanma" anahtarının geçerli olmadığını belirten bir hata mesajı aldım. Mac OS'de chromedriver kullanıyorum
Oturumdan oturuma çerezlere ihtiyaç duyduğunuzda, bunu yapmanın başka bir yolu daha vardır, klasörleri profil olarak kullanmak için Chrome seçenekleri user-data-dizinini kullanın, şunu çalıştırıyorum:
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com")
Burada insan etkileşimini kontrol eden oturum açma bilgilerini yapabilirsiniz, bunu yapıyorum ve şimdi ihtiyacım olan tanımlama bilgilerini, Webdriver'ı bu klasörle her başlattığımda her şey oradadır. Ayrıca Uzantıları manuel olarak yükleyebilir ve her oturumda bunlara sahip olabilirsiniz. İkinci kez çalıştırdığım zaman, tüm çerezler orada:
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com") #Now you can see the cookies, the settings, extensions, etc, and the logins done in the previous session are present here.
Avantajı, farklı ayarlara ve çerezlere sahip birden fazla klasör kullanabilmeniz, Çerezleri yüklemeye, boşaltmaya, Uzantıları yüklemeye ve kaldırmaya, ayarları değiştirmeye, girişleri kodla değiştirmeye gerek kalmadan kullanabilmeniz ve böylece programın mantığını bozmanın hiçbir yolu olmamasıdır. vb. Ayrıca bu, hepsini kodla yapmaktan daha hızlıdır.
chrome_options = Options()
verir name 'Options' is not defined
...?
from selenium.webdriver.chrome.options import Options
Unutmayın, yalnızca mevcut etki alanı için bir çerez ekleyebileceğinizi unutmayın. Google hesabınız için bir çerez eklemek istiyorsanız,
browser.get('http://google.com')
for cookie in cookies:
browser.add_cookie(cookie)
@Eduard Florinescu'nun cevabına göre, ancak daha yeni kod ve eksik içe aktarma eklenmiş:
$ cat work-auth.py
#!/usr/bin/python3
# Setup:
# sudo apt-get install chromium-chromedriver
# sudo -H python3 -m pip install selenium
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
driver = webdriver.Chrome('/usr/bin/chromedriver',options=chrome_options)
chrome_options.add_argument("user-data-dir=chrome-data")
driver.get('https://www.somedomainthatrequireslogin.com')
time.sleep(30) # Time to enter credentials
driver.quit()
$ cat work.py
#!/usr/bin/python3
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
driver = webdriver.Chrome('/usr/bin/chromedriver',options=chrome_options)
driver.get('https://www.somedomainthatrequireslogin.com') # Already authenticated
time.sleep(10)
driver.quit()
@Roel Van de Paar tarafından yazılan kodda ufak bir değişiklik, tüm övgü ona gitti. Bunu Windows'ta kullanıyorum ve hem çerezleri ayarlamak hem de eklemek için mükemmel çalışıyor:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
driver = webdriver.Chrome('chromedriver.exe',options=chrome_options)
driver.get('https://web.whatsapp.com') # Already authenticated
time.sleep(30)
bu pencerelerde kullandığım kod, çalışıyor.
for item in COOKIES.split(';'):
name,value = item.split('=',1)
name=name.replace(' ','').replace('\r','').replace('\n','')
value = value.replace(' ','').replace('\r','').replace('\n','')
cookie_dict={
'name':name,
'value':value,
"domain": "", # google chrome
"expires": "",
'path': '/',
'httpOnly': False,
'HostOnly': False,
'Secure': False
}
self.driver_.add_cookie(cookie_dict)