2016-04-08 17 views
1

Ich habe firefox + Selen zum Schaben verwendet. Allerdings habe ich mich entschieden, zu Phantomjs zu wechseln, da es schneller gehen sollte.Hinzufügen von Cookies mit Selenium Ghostdriver PhantomJS mit Python

Ich habe jetzt Probleme beim Hinzufügen von Cookies bei Verwendung von Phantomjs + Ghostdriver + Selen mit Python. Um das Problem zu lösen, habe ich online nach Lösung gesucht, aber ich kann nicht die richtige Lösung finden.

Unten ist der Code verwendet.

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.common.exceptions import TimeoutException 
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0 
from selenium.webdriver.support import expected_conditions as EC# available since 2.26.0 

driver = webdriver.PhantomJS() 
driver.get("http://kswarrants.kasikornsecurities.com/www/Tool/calculator") 
driver.add_cookie({'name':'Disc', 'value':'YES','Domain':'kswarrants.kasikornsecurities.com'}) 
options = driver.find_elements_by_xpath('//select[@id="underling0"]/option') 

Fehlermeldung bekommen:

selenium.common.exceptions.WebDriverException: Message: {"errorMessage":"Can only set Cookies for the current domain","request":{"headers":{"Accept":"applicatio 
n/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"110","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1","User- 
Agent":"Python-urllib/2.7"},"httpVersion":"1.1","method":"POST","post":"{\"sessionId\": \"2eb47d00-fdb0-11e5-af40-4fb0a42a2c0b\", \"cookie\": {\"path\": \"/\", 
\"name\": \"Disc\", \"value\": \"YES\"}}","url":"/cookie","urlParsed":{"anchor":"","query":"","file":"cookie","directory":"/","path":"/cookie","relative":"/cook 
ie","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/cookie","queryKey":{},"chunks":["cookie"]},"urlOriginal":" 
/session/2eb47d00-fdb0-11e5-af40-4fb0a42a2c0b/cookie"}} 

Der Hauptfehler ist "Cookies nur für die aktuelle Domäne einstellen". Allerdings habe ich bereits vor dem Hinzufügen der Cookies auf die Website navigiert. Ich habe auch bemerkt, dass der Host in der Anfrage Kopfzeile ist 127.0.0.1, die lokale Host ist. Dies kann die Ursache des Problems sein. Gibt es eine Möglichkeit, dies zu lösen? Wie kann ich den Host im Anforderungsheader ändern? Danke im Voraus.

Antwort

0

wenn Cookie in Schritt hinzufügen:

driver.add_cookie({'name':'Disc', 'value':'YES','Domain':'kswarrants.kasikornsecurities.com'}) 

Sie

ist
0

wenn Cookie Hinzufügen 'Domain' Schlüssel 'Domain' mit Low-case 'd' statt 'Domain' erforderlich verwenden sollten. Das ist mein Beispiel

Einschließlich hinzufügen Cookie, erhalten Cookie und löschen Cookie:

require 'selenium-webdriver' 
require 'phantomjs' 

# webdriver.PhantomJS 
# install gems and phantomJs first 
Selenium::WebDriver::PhantomJS.path = 'C:\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe' 
driver = Selenium::WebDriver.for :phantomjs 
driver.get 'http://stackoverflow.com/' 
puts driver.title 

# additional keys that can be passed in are: 
# :path => String, :secure -> Boolean, :expires -> Time, DateTime, or seconds since epoch 
driver.manage.all_cookies.each { |cookie| 
    puts "#{cookie[:name]} => #{cookie[:value]}, #{cookie[:domain]}" 
} 

# add cookie !! domain is required !! 
driver.manage.add_cookie(:name => 'key', :value => 'value', :domain => '.stackoverflow.com') 
# Delete By name 
driver.manage.delete_cookie 'key' 
# Or delete all of them 
driver.manage.delete_all_cookies 
driver.quit 
Verwandte Themen