Linux ip-172-31-36-170 3.10.35-43.137.amzn1.x86_64#1 SMP Wed Apr 2 09:36:59 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux
Amazon Linux AMI发布2014.03 CPE:/ O:亚马逊:LINUX:2014.03:GA
我使用selenium.webdriver.PhantomJS的脚本遇到了一个奇怪的问题。
...症状 我的脚本使用以下命令启动phantomjs会话
from selenium import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
(…)
def load_driver(self, _driver = "phantomjs", _path = "./phantomjs"):
if "phantom" in str(_driver).lower():
self.driver = webdriver.PhantomJS(_path)
失败: selenium.common.exceptions.WebDriverException:消息:'无法使用ghostdriver启动phantomjs。' ;屏幕截图:可通过屏幕获取
但是,在python命令行中,一切正常......
from selenium import webdriver
_path = './phantomjs.exe'
driver = webdriver.PhantomJS(_path)
PLATFORM: Linux
platform.system() != 'Windows': True
(我将解释“PLATFORM:Linux”和“platform.system()!=' Windows':True”下面的内容)
... SO 我将错误追溯到“/usr/lib/python2.6/site-packages/selenium/webdriver/phantomjs/service.py”,特别是这段代码......
def start(self):
"""
"""
try:
print "PLATFORM:", platform.system() #ADDED BY ME
# FOLLOWING ADDED BY ME, NOW CAUSING THE ERROR
print "platform.system() != 'Windows': ", platform.system() != 'Windows'
self.process = subprocess.Popen(self.service_args, stdin=subprocess.PIPE,
close_fds=platform.system() != 'Windows', # <-- THIS CAUSED ORIG PROB
stdout=self._log, stderr=self._log)
except Exception as e:
raise WebDriverException("Unable to start phantomjs with ghostdriver.", e)
和这里的问题...... 当我在python命令行运行代码(见上文)时,一切都很好,对'platform.system()'和“platform.system()的响应!=&#39; Windows&#39; “ 是正确的。
然而,当我运行我的脚本时,'platform.system()'报告为空白和“platform.system()!=&#39; Windows&#39; “错误。 (见下面的实际输出)。
因此,出于某种原因,当我的脚本加载selenium并运行时... SELENIUM CODE失去了'platform'导入。
感谢您的帮助!
下面的实际输出(通知&#39;平台:&#39;后面跟着&#39;空白&#39;(而不是&#39; Linux&#39;)和下一行“平台。 system()!=&#39; Windows&#39;“触发错误。这些行被我添加到SELENIUM代码中,而不是我的代码!)
PLATFORM:
Traceback (most recent call last):
File "./agmarknet.py", line 834, in <module>
username = options.username # --username
File "./agmarknet.py", line 124, in __init__
self.load_driver(driver, driver_path)
File "./agmarknet.py", line 521, in load_driver
self.driver = webdriver.PhantomJS(_path)
File "/usr/lib/python2.6/site-packages/selenium/webdriver/phantomjs/webdriver.py", line 50, in __init__
self.service.start()
File "/usr/lib/python2.6/site-packages/selenium/webdriver/phantomjs/service.py", line 64, in start
print "PLATFORM:", platform.system() #333
File "/usr/lib64/python2.6/platform.py", line 1272, in system
return uname()[0]
File "/usr/lib64/python2.6/platform.py", line 1239, in uname
processor = _syscmd_uname('-p','')
File "/usr/lib64/python2.6/platform.py", line 995, in _syscmd_uname
output = string.strip(f.read())
File "./agmarknet.py", line 350, in _signal_handler
self._cleanup()
File "./agmarknet.py", line 194, in _cleanup
self.driver.close()
AttributeError: 'Agmarknet' object has no attribute 'driver'
2014-05-18 12:42:40,281 - Agmarknet - INFO - Closing WebDriver...
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/usr/lib64/python2.6/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
File "./agmarknet.py", line 194, in _cleanup
self.driver.close()
AttributeError: 'Agmarknet' object has no attribute 'driver'
Error in sys.exitfunc:
Traceback (most recent call last):
File "/usr/lib64/python2.6/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
File "./agmarknet.py", line 194, in _cleanup
self.driver.close()