由于目标机器主动拒绝(硒),因此无法建立连接

时间:2012-03-28 07:23:49

标签: selenium

我从selenium IDE中提取了以下代码。(c#remote control)

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using Selenium;

namespace SeleniumTests
{
[TestFixture]
public class MyFirstVCTest
{
    private ISelenium selenium;
    private StringBuilder verificationErrors;

    [Test]
    public void TheNewTest()
    {
        selenium.Open("/");
    } 

    [SetUp]
    public void SetupTest()
    {
        selenium = new DefaultSelenium("localhost", 4444, "*chrome","http://demo.volunteercampaigns.com/");
        selenium.Start();
        verificationErrors = new StringBuilder();
    }

    [TearDown]
    public void TeardownTest()
    {
        try
        {
            selenium.Stop();
        }
        catch (Exception)
        {
            // Ignore errors if unable to close the browser
        }
        Assert.AreEqual("", verificationErrors.ToString());
    }

    [Test]
    public void TheMyFirstVCTest()
    {
        selenium.Open("/?AspxAutoDetectCookieSupport=1");
        selenium.Click("link=Login");
        selenium.WaitForPageToLoad("30000");
        selenium.Type("id=ctl00_ContentPlaceHolder1_txtEmailAddress", "elonadminss@eeeorbees.com");
        selenium.Type("id=ctl00_ContentPlaceHolder1_txtPassword", "orbs123");
        selenium.Click("id=ctl00_ContentPlaceHolder1_btnlogin");
        selenium.WaitForPageToLoad("30000");
        selenium.Click("id=ctl00_lblUserName");
        selenium.Click("id=ctl00_lnkSignOut");
        selenium.WaitForPageToLoad("30000");
    }
}
}

我创建了一个webform并在那里添加了一个按钮。

在按钮点击事件中我写了这段代码

SeleniumTests.MyFirstVCTest m = new SeleniumTests.MyFirstVCTest();
    m.SetupTest();
    m.TheMyFirstVCTest();
    m.TeardownTest();

我包含了所有.dll文件。它运行良好(没有错误和警告)。

但点击按钮后我收到以下错误

No connection could be made because the target machine actively refused it 127.0.0.1:4444

我该怎么办?

提前感谢..

观看者注意:这篇文章可以帮助您:No connection could be made because the target machine actively refused it

9 个答案:

答案 0 :(得分:8)

“...目标计算机主动拒绝它”意味着可以在超时内到达并响应服务器,但指定的端口未打开。这可能有几个原因,例如:阻止连接的本地防火墙。您确定服务器正在侦听正确的IP /端口吗?

答案 1 :(得分:3)

为读者添加更多清晰度:使用以下基本步骤启动selenium服务器:

  • 从官方selenium下载下载selenium -server standalone 页面。
    • 打开命令提示符。
    • 使用“Cd”导航到该文件夹​​。
    • 添加此命令:“java - jar”。
    • 点击进入。
    • 将启动Selenium服务器。

答案 2 :(得分:3)

我得到了同样的错误,但是在不同的代码行上。希望这可能会帮助某个人,即使它没有回答最初的问题。

    public override void SetupTest()
    {
        Driver = new FirefoxDriver();
        base.SetupTest();
    }

我正在使用WebDriver(我不运行Selenium服务器),FirefoxDriver的构造函数抛出异常。

有时我会遇到这个例外:

A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll
Additional information: No connection could be made because the target machine actively refused it

使用此调用堆栈:

    WebDriver.dll!OpenQA.Selenium.Firefox.Internal.ExtensionConnection.ConnectToBrowser(System.TimeSpan timeToWait) Line 247    C#
    WebDriver.dll!OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start() Line 98  C#
    WebDriver.dll!OpenQA.Selenium.Firefox.FirefoxDriver.StartClient() Line 237  C#
    WebDriver.dll!OpenQA.Selenium.Remote.RemoteWebDriver.RemoteWebDriver(OpenQA.Selenium.Remote.ICommandExecutor commandExecutor, OpenQA.Selenium.ICapabilities desiredCapabilities) Line 89    C#
    WebDriver.dll!OpenQA.Selenium.Firefox.FirefoxDriver.FirefoxDriver(OpenQA.Selenium.Firefox.FirefoxBinary binary, OpenQA.Selenium.Firefox.FirefoxProfile profile, OpenQA.Selenium.ICapabilities capabilities, System.TimeSpan commandTimeout) Line 172    C#
    WebDriver.dll!OpenQA.Selenium.Firefox.FirefoxDriver.FirefoxDriver(OpenQA.Selenium.Firefox.FirefoxBinary binary, OpenQA.Selenium.Firefox.FirefoxProfile profile, System.TimeSpan commandTimeout) Line 167    C#
    WebDriver.dll!OpenQA.Selenium.Firefox.FirefoxDriver.FirefoxDriver(OpenQA.Selenium.Firefox.FirefoxBinary binary, OpenQA.Selenium.Firefox.FirefoxProfile profile) Line 154    C#
    WebDriver.dll!OpenQA.Selenium.Firefox.FirefoxDriver.FirefoxDriver(OpenQA.Selenium.Firefox.FirefoxProfile profile) Line 132  C#
    SetupTest() Line 513    C#

有时我会遇到这个例外:

A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll
Additional information: Only one usage of each socket address (protocol/network address/port) is normally permitted

使用此调用堆栈:

    WebDriver.dll!OpenQA.Selenium.Firefox.Internal.ExtensionConnection.DetermineNextFreePort(string host, int port) Line 161    C#
    WebDriver.dll!OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start() Line 88  C#
    [same as above]

但有一点我最初没有意识到,如果你继续执行(F5),一切都很好。必须在WebDriver中处理异常。

唯一的问题是我有 DEBUG / Exceptions / CLR Exceptions:Thrown [checked] 。 只需取消选中即可完成所有操作而不会丢失/破坏。我花了一段时间才意识到这一点。以前调试会话的剩余内容......

答案 3 :(得分:2)

这就是我这样做的方式,我班级的结构。

 [TestFixture, Parallelizable(ParallelScope.None)]
 public class UserTest : BaseTestClass
 {
            [SetUp]
            public void SetUp()
            {
                ChromeOptions options = new ChromeOptions();
                //options.AddArgument("--headless");
                options.AddArgument("--start-maximized");
                var driver = new ChromeDriver(options);
                WebDriver = WebDriverExtended.InitWebDriver(driver, driver.Url);
                WebDriver.Start();
            }

           [TearDown]
            public void Cleanup()
            {
             //Dispose after every single test, fixed the problem.
                WebDriver.Close();
                WebDriver.Quit();
                WebDriver.Dispose();
            }

      [Test]
      public void LoginTest()
      {
       //My test ...
      }
}

我目前正在使用Selenium.Support v3.6.0和Selenium.WebDriver v3.6.0。 处置webdriver解决了我的问题

  

无法建立连接,因为目标计算机是主动的   拒绝了它127.0.0.1:4444

答案 4 :(得分:1)

我得到了这个,因为我的代码的一部分引用了陈旧的驱动程序。

var driver1 = new OpenQA.Selenium.Firefox.FirefoxDriver();
driver1.Close();
driver1.Quit();
driver1.Dispose();

var x = driver1.FindElements(...);

答案 5 :(得分:0)

确保要运行脚本的远程计算机已启动并正常运行。其次确保Chrome驱动程序和chrome更新。最后,没有防火墙阻止您访问远程计算机。

PS:手动关闭selenium服务器并重新启动它。

答案 6 :(得分:0)

对我来说,通过更改Chrome中的设置可以解决此问题,如下所示:

  • 进入Chrome菜单设置(三个垂直点/汉堡菜单)
  • 向下滚动到高级,然后展开
  • 系统>打开代理服务器设置
  • 取消选中“自动检测设置”

答案 7 :(得分:0)

我也遇到过这种类型的错误。 我所做的是在测试结束时关闭浏览器并退出驱动程序,但我忘了让 Webdriver wait = null; 因此,当我再次尝试为下一个测试打开一个新浏览器时,它最终会启动浏览器并重定向到 URL,但在交互时它给了我这个错误 No connection could be made because the target machine actively refused it

所以我发现我正在使用 wait 的封闭驱动程序实例。 所以请检查您是否正在使用类似的东西。

答案 8 :(得分:0)

就我而言,这是服务范围的问题。使用 WebDriver 的那些被注册为单例,并且在第一个之后的每个后续请求都失败了。 (即使我在每次请求后手动关闭并重新创建 Web 驱动程序实例)。一旦我将范围更改为瞬态,它就可以正常工作。