我按命令启动Selenium服务器中心
java -jar selenium-server-standalone-2.33.0.jar -role hub
和Selenium服务器节点按命令
java -jar selenium-server-standalone-2.33.0.jar -role node -hub http://localhost:4444/grid/register -browser browserName=htmlunit
然后我正在尝试执行代码:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
server = 'http://localhost:4444/wd/hub'
dc = DesiredCapabilities.HTMLUNIT
browser = webdriver.Remote(server, dc)
browser.get('http://localhost:8000')
此后一切都很好。 但是,当我试图启动詹金斯测试时:
from django.test import TestCase, LiveServerTestCase
from selenium.webdriver.common import proxy
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.remote.webdriver import WebDriver
class SeleniumTest(LiveServerTestCase):
@classmethod
def setUpClass(cls):
p = proxy.Proxy({
'proxyType': proxy.ProxyType().MANUAL,
'httpProxy': '127.0.0.1:4444',
})
capabilities = DesiredCapabilities().HTMLUNIT
cls.selenium = WebDriver(desired_capabilities=capabilities, proxy=p)
super(SeleniumTest, cls).setUpClass()
@classmethod
def tearDownClass(cls):
cls.selenium.quit()
super(SeleniumTest, cls).tearDownClass()
def test_javascript_basket(self):
self.selenium.get('http://localhost:8000')
我收到跟踪错误,包含在追溯中:
WebDriverException:消息:u'\ n \ n \ nERROR:无法检索到请求的URL \ n \ n \ n \ n
ERROR
\ n请求的无法检索URL
\ n \ n
\ n \ n \ n尝试检索URL时遇到以下错误:a href =“http:// localhost:4444 / wd / hub / session“localhost:4444 / wd / hub / session ap \ n \ n \ n
与127.0.0.1的连接失败。
\ n < / blockquote> \ n \ n系统返回:(111)连接被拒绝\ n \ n
远程主机或网络可能已关闭。请再次尝试请求。
\ n \ n您的缓存管理员是网站管理员。
\ n \ n \ n \ n \ n
\ n \ nGenerated Mon,10 Jun 2013 04:36:42 GMT by localhost(squid / 3.1.6) \ n \ n \ n'
发生了什么事?为什么从Jenkins测试连接到Selenium服务器不起作用?
python==2.7.3 Django==1.5 django-jenkins==0.14.0 selenium==2.33.0
更新:如果我使用的是Firefox WebDriver而不是HTMLUNIT,那么Firefox会在行后开启
cls.selenium = WebDriver(desired_capabilities=capabilities, proxy=p)
,但后来引发了上述异常。
分辨 我只需添加到
setUpClass()
方法:import os . . . def setUpClass(cls): os.environ['NO_PROXY'] = '127.0.0.1'
答案 0 :(得分:3)
我用这种方式解决了问题(使用了 phantom-js 而不是 HTMLUNIT ,因为它是唯一保持稳定版本的代码)。
from django.test import LiveServerTestCase
from selenium import webdriver
from os import environ
class SeleniumTestCase(LiveServerTestCase):
__test__ = False
@classmethod
def setUpClass(cls):
environ['NO_PROXY'] = '127.0.0.1' # The key point
cls.selenium = webdriver.PhantomJS(service_args=['--proxy-type=none'])
super(SeleniumTestCase, cls).setUpClass()
@classmethod
def tearDownClass(cls):
cls.selenium.close()
cls.selenium.quit()
super(SeleniumTestCase, cls).tearDownClass()
class TestFoo(SeleniumTestCase):
def setUp(self):
# do something before every test method runs
pass
def test_foo(self):
# test
pass