2016-04-08 12 views
1

私はscrapingにfirefox + seleniumを使用しています。しかし、私はPhantomjsに切り替えることにしました。Selenium Ghostdriverを使用したクッキーの追加PythonでのPhantomJS

PythonでPhantomjs + ghostdriver + seleniumを使用するときに、クッキーを追加する際に問題が発生するようになりました。この問題を解決するために、私は解決策をオンラインで検索してきましたが、適切な解決策を見つけることができません。

以下は使用されるコードです。得

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') 

エラーメッセージ:

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"}} 

主なエラーは、 "現在のドメインのみのためにクッキーを設定することができます" です。しかし、私は既にクッキーを追加する前にウェブサイトに移動しています。私はまた、要求ヘッダーのホストがローカルホストである127.0.0.1であることに気付きました。これが問題の原因となる可能性があります。これを解決する方法はありますか?リクエストヘッダーでホストを変更するにはどうすればよいですか?前もって感謝します。

答えて

0

ステップでクッキーを追加:

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

あなたは、低ケース「D」の代わりに[ドメイン]が

0

クッキーを追加し、「ドメイン」は必要とされてキー「ドメイン」を使用する必要があります。これは私の例で、含め

は、クッキーを追加は、クッキークッキーを削除し得る:

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 
関連する問題