Python - Selenium PhantomJS - JSON Error

时间:2015-09-01 21:43:21

标签: python selenium phantomjs

I have a small test python script that uses Selenium and PhantomJS. Python version is 2.7 and PhantomJS is 1.9.2. I later plan to use this with BeautifulSoup for accessing a financial website.

My python script looks like this -

from selenium import webdriver
phantomJSPath = "C:\my working dir\\Lib\phantomjs.exe"
browser = webdriver.PhantomJS(executable_path=phantomJSPath)

After executing I get the below error -

File "C:\my working dir\Test.py", line 32, in run

browser = webdriver.PhantomJS(executable_path=phantomJSPath)
File "C:\Python27\lib\site-   packages\selenium\webdriver\phantomjs\webdriver.py", line 56, in __init__
desired_capabilities=desired_capabilities)
File "C:\Python27\lib\site-  packages\selenium\webdriver\remote\webdriver.py", line 87, in __init__
self.start_session(desired_capabilities, browser_profile)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 136, in   start_session
'desiredCapabilities': desired_capabilities,
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 196, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 102, in check_response
value = json.loads(value_json)
File "C:\Python27\lib\json\__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "C:\Python27\lib\json\decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
File "C:\Python27\lib\json\decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

Would anyone know why I am getting this error?

3 个答案:

答案 0 :(得分:2)

很抱歉回答我自己的赏金,但对于那些可能会遇到类似问题的人:http_proxy环境变量不能很好地与phantomjs和selenium一起使用。我删除了它,所有工作都应该有。

答案 1 :(得分:1)

在使用在Ubunto 15上运行的selenium 1.9.8调用browser.close()时,我遇到了类似的问题(瞬态):

  File "propertunity/soup/Soup.py", line 121, in get...
    browser.close()
  File "/home/<user>/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 473, in close
    self.execute(Command.CLOSE)
  File "/home/<user>/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 201, in execute
    self.error_handler.check_response(response)
  File "/home/<user>/.local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 102, in check_response
    value = json.loads(value_json)
  File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

使用完浏览器后,似乎有一个已知issue的close()没有真正清理。尝试更改close()以退出并将浏览器对象设置为None。

答案 2 :(得分:1)

你应该给出额外的参数来定义coarse_t = 1:5:100; s1_coarse = zeros(size(coarse_t)); s2_coarse = zeros(size(coarse_t)); o_coarse = zeros(size(coarse_t)); for i = 2:length(coarse_t) s1_coarse(i) = sum(nonzeros(s1(t1<coarse_t(i) & t1>coarse_t(i-1)))); s2_coarse(i) = sum(nonzeros(s2(t2<coarse_t(i) & t2>coarse_t(i-1)))); o_coarse(i) = sum(nonzeros(o(to<coarse_t(i) & to>coarse_t(i-1)))); end ,它会尝试分配期望json对象的browser。你可以这样做:

desired_capabilities=desired_capabilities