在C#中获取Selenium RemoteWebDriver的会话ID

elu*_*id8 7 c# unit-testing saucelabs selenium-webdriver

我正在尝试获取在SauceLabs云上运行的测试的会话ID,但我似乎无法访问它.

我尝试了以下方法:

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

//Will not compile
sessionId = ((RemoteWebDriver)driver).SessionId; //This is protected. 
Run Code Online (Sandbox Code Playgroud)

第二种方法特别令人困惑.它是一个受保护的属性,但如果我只能从派生类访问它,那么它对我所需要的东西基本没用.

会话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();
    }
} 
Run Code Online (Sandbox Code Playgroud)

Met*_*Man 2

您可以做什么的示例

class  CustomeRemoteDriver : RemoteWebDriver
{    
    public CustomRemoteDriver(Uri uri, DesiredCapabilities capabilities) 
    : base(uri, capabilities)
    { 
    } 

    public SessionId getExecutionID() 
   { 
      return ((CustomRemoteDriver)Driver.Browser.driver).SessionId; 
   } 
}
Run Code Online (Sandbox Code Playgroud)