7

SauceLabs クラウドで実行されているテストのセッション ID を取得しようとしていますが、アクセスできないようです。

私は次のアプローチを試しました:

//Returns null
var sessionId = (string)((RemoteWebDriver)driver).Capabilities.GetCapability("webdriver.remote.sessionid");

//Will not compile
sessionId = ((RemoteWebDriver)driver).SessionId; //This is protected. 

2 番目のアプローチは特に混乱を招きます。これは保護されたプロパティですが、派生クラスからしかアクセスできない場合、必要なものには本質的に役に立ちません。

セッションID

どんな助けでも大歓迎です。

これを機能させるには、から派生したクラスを作成しRemoteWebDriver、getter メソッドを定義する必要がありました。例えば:

class  CustomeRemoteDriver : RemoteWebDriver
{

    public CustomeRemoteDriver(ICapabilities desiredCapabilities):base(desiredCapabilities)
    {
    }

    public CustomeRemoteDriver(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities):base(commandExecutor, desiredCapabilities)
    {
    }

    public CustomeRemoteDriver(Uri remoteAddress, ICapabilities desiredCapabilities):base(remoteAddress, desiredCapabilities)
    {
    }

    public CustomeRemoteDriver(Uri remoteAddress, ICapabilities desiredCapabilities, TimeSpan commandTimeout):base(remoteAddress, desiredCapabilities, commandTimeout)
    {
    }

    public string GetSessionId()
    {
        return base.SessionId.ToString();
    }
} 
4

5 に答える 5

2

これにより、単純に sessionId: を取得します

String sessionId = ((RemoteWebDriver)webDriver).getSessionId().toString();

ここ

WebDriver webDriver = null; 

すでに宣言されています。

于 2013-09-12T10:24:16.907 に答える
1

私は使用selenium-dotnet-2.48.0していますが、これはうまく機能しています:

string sessionId = ((RemoteWebDriver)driver).Capabilities.GetCapability("webdriver.remote.sessionid").ToString(); 

ビデオを True に設定していることを確認します。

DesiredCapabilities capability = DesiredCapabilities.Firefox();
...
capability.SetCapability("video", "True");
于 2015-11-30T18:31:36.430 に答える