我正在尝试获取在SauceLabs云上运行的测试的会话ID,但我似乎无法访问它。
我尝试过以下方法:
//Returns null
var sessionId = (string)((RemoteWebDriver)driver).Capabilities.GetCapability("webdriver.remote.sessionid");
//Will not compile
sessionId = ((RemoteWebDriver)driver).SessionId; //This is 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();
}
}
答案 0 :(得分:4)
也可以使用反射。
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());
}
}
答案 1 :(得分:2)
你可以做什么的例子
class CustomeRemoteDriver : RemoteWebDriver
{
public CustomRemoteDriver(Uri uri, DesiredCapabilities capabilities)
: base(uri, capabilities)
{
}
public SessionId getExecutionID()
{
return ((CustomRemoteDriver)Driver.Browser.driver).SessionId;
}
}
答案 2 :(得分:2)
只需获取sessionId: 通过这个
String sessionId = ((RemoteWebDriver)webDriver).getSessionId().toString();
这里
WebDriver webDriver = null;
已经宣布。
答案 3 :(得分:0)
我正在使用selenium-dotnet-2.48.0
,这很好用:
string sessionId = ((RemoteWebDriver)driver).Capabilities.GetCapability("webdriver.remote.sessionid").ToString();
确保将视频设为True:
DesiredCapabilities capability = DesiredCapabilities.Firefox();
...
capability.SetCapability("video", "True");
答案 4 :(得分:0)
使用Selenium.WebDriver版本=“ 3.141.0”,可以正常工作:
string sessionId = ((RemoteWebDriver)Driver).SessionId.ToString();