2

GhostDriver (PhantomJS) を使用した Selenium の最初の非常に単純なテストでは、テストはパスしますが、PhantomJS.exe は終了しません。Windows 7、PhantomJS 1.9.0、Selenium WebDriver API 2.32.1、および NUnit 2.6.2.12296、.NET 3.5 で実行しています。

これが私のC#/Nunit/WebDriverコードです:

[TestFixture]
public class Driver
{
    IWebDriver driver;

    [SetUp]
    public void Setup()
    {
        driver = new PhantomJSDriver(@"D:\src\Tests\Drivers");
    }

    [TearDown]
    public void Teardown()
    {
        driver.Quit();
        driver.Dispose();
    }

    [Test]
    public void GoogleSearch()
    {
        //Navigate to the site
        driver.Navigate().GoToUrl("http://www.google.com");
        Assert.AreEqual("Google", driver.Title);
    }
}

そして、PhantomJS のすべてを以下に示します。

PhantomJS is launching GhostDriver...
[INFO  - 2013-04-26T16:38:56.417Z] GhostDriver - Main - running on port 64183
[INFO  - 2013-04-26T16:38:56.630Z] Session [c9f2b8e0-ae8f-11e2-a7c1-159b6700bc86
] - CONSTRUCTOR - Desired Capabilities: {"browserName":"phantomjs","version":"",
"platform":"ANY"}
[INFO  - 2013-04-26T16:38:56.649Z] Session [c9f2b8e0-ae8f-11e2-a7c1-159b6700bc86
] - CONSTRUCTOR - Negotiated Capabilities: {"browserName":"phantomjs","version":
"1.9.0","driverName":"ghostdriver","driverVersion":"1.0.3","platform":"windows-7
-32bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"d
atabaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":f
alse,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnab
led":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":
{"proxyType":"direct"}}
[INFO  - 2013-04-26T16:38:56.701Z] SessionManagerReqHand - _postNewSessionComman
d - New Session Created: c9f2b8e0-ae8f-11e2-a7c1-159b6700bc86
[INFO  - 2013-04-26T16:38:59.470Z] ShutdownReqHand - _handle - About to shutdown

しかし、シャットダウンすることはありません...何かアイデアはありますか?

4

2 に答える 2

1
[TestFixture]
public class Driver
{
    [Start]
    public void Start()
    {
       using (var driver = new PhantomJSDriver(@"D:\src\Tests\Drivers"))
       {
          driver.Url = "https://www.google.com";
          Assert.AreEqual("Google", driver.Title);
       }
    }
}

これはあなたの問題を解決します。driver.Dispose();それがパブリック変数である場合は明示的に呼び出すことができる場合は常にステートメントを使用して物事をカプセル化することを忘れないでください。終了すると、デコンストラクターが呼び出され、コード行が実行されます。

ステートメントを使用すると、クリーンアップが処理されます。

于 2015-02-07T03:20:47.203 に答える
0

まったく同じ環境を使用して、これを再現することはできません。(テストを実行しますnunit.exe)

Windows 7、PhantomJS 1.9.0、Selenium WebDriver API 2.32.1 および NUnit 2.6.2.12296、.NET 3.5。

Selenium と PhantomJS の両方が新しいバージョンにアップグレードされたため。あなたもアップグレードして、この問題が再び発生するかどうかを確認することをお勧めします。

セレン: selenium-dotnet-2.33.0.zip

PhantomJs : phantomjs-1.9.1-windows.zip

また、ソースコードからのように、と の両方Quit()を呼び出す必要はないと思いますが、これがメソッドの実装方法です。Dispose()Quit()

/// <summary>
/// Close the Browser and Dispose of WebDriver
/// </summary>
public void Quit()
{
   this.Dispose();
}
于 2013-07-19T01:18:32.837 に答える