我正在尝试获取在 SauceLabs 云上运行的测试的 session ID,但我似乎无法访问它。
我尝试了以下方法:
//Returns null
var sessionId = (string)((RemoteWebDriver)driver).Capabilities.GetCapability("webdriver.remote.sessionid");
//Will not compile
sessionId = ((RemoteWebDriver)driver).SessionId; //This is protected.
第二种方法特别令人困惑。它是一个 protected 属性,但如果我只能从派生类访问它,那么它对我需要的东西基本上毫无用处。
感谢任何帮助。
为了让它工作,我必须创建一个从 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();
}
}
最佳答案
也可以通过反射达到目的。
var sessionIdProperty = typeof(RemoteWebDriver).GetProperty("SessionId", BindingFlags.Instance | BindingFlags.NonPublic);
if (sessionIdProperty != null)
{
SessionId sessionId = sessionIdProperty.GetValue(driver, null) as SessionId;
if (sessionId == null)
{
Trace.TraceWarning("Could not obtain SessionId.");
}
else
{
Trace.TraceInformation("SessionId is " + sessionId.ToString());
}
}
关于c# - 在 C# 中获取 Selenium RemoteWebDriver 的 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15767066/