【发布时间】:2013-03-23 22:07:24
【问题描述】:
我正在尝试获取在 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();
}
}
【问题讨论】:
-
它看起来几乎像
Casting问题你能发布什么实际错误是很难看到你发布的小图片 -
这里有一个在线指南,可以帮助您..您还可以展示这个类是如何定义的吗?我可以为您提供一个想法,但需要查看该类以及它是如何定义的为您的 RemoteWebDriver 定义..您如何继承此 testingbot.com/support/getting-started/csharp.html
-
那么,我是否应该创建一个派生类来将我的 RemoteWebDriver 转换为然后使用 getter 方法访问会话 ID?
-
类似
public CustomRemoteDriver(Uri uri, DesiredCapabilities capabilities) : base(uri, capabilities) { } public SessionId getExecutionID() { return ((CustomRemoteDriver)Driver.Browser.driver).SessionId; } } -
是的,我就是这么做的。它有效,但它是不必要的迂回。继续添加答案,我会给你投票。
标签: c# unit-testing selenium-webdriver saucelabs