c# - 在 C# 中获取 Selenium RemoteWebDriver 的 session ID

标签 c# unit-testing selenium-webdriver saucelabs

我正在尝试获取在 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 属性,但如果我只能从派生类访问它,那么它对于我需要的东西基本上没有用。

Session 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();
    }
} 

最佳答案

也可以达到使用反射。

            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/

相关文章:

c# - GridView 分组行并更改颜色

c++ - 是否可以将非枚举值作为枚举函数参数传递?

unit-testing - 由于先前的测试用例失败而引发的断言异常

javascript - selenium.common.exceptions.WebDriverException:消息:未知错误:arguments [0] .click不是在Selenium Python中使用execute_script()的函数

java - 无法使用Selenium Java中的sendKeys()将文件上传到“浏览”按钮

c# - 在 Entity Framework 中更新实体的最佳方法

c# - 如何调用显式实现的方法

java - 在Selenium中自动化时如何在WebDriver中禁用JavaScript?

c# - 在 C# 中使用 new 关键字

iOS 测试套件 - 添加整个项目源代码进行测试