Selenium 2 webdriver - 连接到 http://localhost:7055 被拒绝

3

我正在尝试使用 selenium-java:2.2.0,但是一直出现以下错误:

org.openqa.selenium.WebDriverException: org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:7055 refused
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.18-238.12.1.el5', java.version: '1.6.0_26'
Driver info: driver.version: FirefoxDriver
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:406)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:103)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:86)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:121)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:77)
    at com.lexmark.cloudprint.BaseSeleneseTestCase.setUp(BaseSeleneseTestCase.groovy:21)

通过这个简单的设置:

class BaseSeleneseTestCase {
    Selenium selenium
    FirefoxDriver driver

    @Rule public TestName name = new TestName();

    @Before
    public void setUp() {
        driver = new FirefoxDriver();

        def config = new ConfigSlurper(GrailsUtil.environment).parse(new File('grails-app/conf/Config.groovy').toURL())
        selenium = new WebDriverBackedSelenium(driver, (String) config.grails.serverURL);

        def GLOBAL_TIMEOUT_IN_MS = "10000"
        selenium.setTimeout(GLOBAL_TIMEOUT_IN_MS)
    }

在互联网上搜索,似乎很多人都遇到了同样的问题,但我需要一些解决方法。是否有人在Linux上成功使用selenium2 webdriver?如果是,怎么做?
2个回答

1

使用WebDriverBackedSelenium意味着您要求连接到远程控制的驱动程序。如果这是您想要的,我认为您必须部署远程控制的Selenium服务器。

如果您只想直接在Firefox中执行测试(我的意思是,没有RemoteControl Selenium),则可以完全避免使用WebDriverBackedSelenium,例如:

FirefoxDriver driver;
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
[...]
driver.get(myTestUrl);
driver.findElement(By.xpath(myElementXpath)).click();

为了更好地理解您的问题并阅读您测试中的其余部分,了解您如何调用测试方法、断言等将非常有用。

更新:可以使用基本的WebDriver接口来切换实现(例如更改浏览器),例如:

在基本测试类中执行以下操作:

public abstract class WebDriverBaseTest {

    protected WebDriver driver;

    @Before
    public void setUp() throws Exception {
        setDriverForTest();
    }

    protected abstract void setDriverForTest();

    // Rest of tests here ...
}

为每个浏览器扩展此类以进行测试:

public class FirefoxTest extends WebDriverBaseTest {

    @Override
    protected void setDriverForTest() {
        driver = new FirefoxDriver();
    }
}

public class HtmlUnitTest extends WebDriverBaseTest {

    @Override
    protected void setDriverForTest() {
        HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver(BrowserVersion.FIREFOX_3_6);
        htmlUnitDriver.setJavascriptEnabled(true);
        driver = htmlUnitDriver;
    }
}

这是你需要的吗?


这在没有运行Selenium服务器的Windows/Mac机器上运行得很好。显然,根据文档,使用Selenium接口可以保持向后兼容性,所以我正在尝试这样做。我也想在某个时候切换驱动程序来测试IE,所以直接使用驱动程序而没有接口包装是不可行的选择。 - Stefan Kendall
好的。那为什么不使用WebDriver接口呢?我会更新我的代码来展示它。 - think01

0
请检查您的Firefox版本,也许新的Firefox需要更高版本的Selenium驱动程序。 目前,我必须升级到适用于Firefox 29.0的Selenium驱动程序2.39.0。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接