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

2024-07-01

我正在尝试获取在 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();
    }
} 

也可以通过使用反射来实现。

            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());
                }
            }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中获取 Selenium RemoteWebDriver 的会话 ID 的相关文章

随机推荐

  • 如何生成唯一的DICOM UID?

    我正在研究 DICOM 门控 PET 数据 我想人为地创建一个包含门控数据的 DICOM 图像系列 我正在查询 SOPInstanceUID 的增量值 它标记每个阶段或门中的每个图像切片 这些对于门中的每个切片都有不同的值 并且在门之间递增
  • 谷歌地图如何将图像添加到InfoWindow中

    您好 我正在尝试将图像添加到谷歌地图信息窗口中 我的代码就像这样的脚本 var ContactUs function return main function to initiate the module init function var
  • 如何在 WinRT 中从 C++ 获取堆栈跟踪?

    我需要从 C 应用程序获取堆栈跟踪 并将其序列化为字符串 以便稍后解析 我在 Windows 上听说过的唯一 API 是 StackWalk64 它似乎不受支持 如何在 Windows 应用商店应用程序中从 C 获取堆栈跟踪 我能够调试复杂
  • 为什么 (false || null) 返回 null,而 (null || false) 返回 false?

    为什么false null返回与以下不同的结果null false 我可以安全地依靠吗return myVar false如果 myVar 是其中之一 则返回 falsenull or false but true否则 所有组合 false
  • 如何在Azure函数应用程序中调用函数后动态更改内容

    我正在使用 Visual Studio 2019 使用 Azure function v3 0 开发 Azure function 应用程序 我实现了一个时间触发的功能 我想更改内容 时间表 function json function j
  • 与选择顶部相反

    Transact SQL 有一个方便的SELECT TOP 4 whatever FROM 我想做一个 SELECT 查询 返回表中的最后 n 个条目 而不是第一个条目 这是我用来返回在表中输入的前四个项目的查询 使用 SELECT TOP
  • 不可能的? HTML 鼠标悬停边框颜色随边框折叠而变化?

    我希望有一个表格 其中所有边框 内部 外部 的宽度都是单个像素 我通过设置来实现这一点border collapse桌子上的风格 那么我希望onmouseover每个 TD 单元 改变border color为不同的颜色 如果表格边框尚未折
  • 无法获得正确的程序集过滤器来使用 TeamCity 8 和 dotCover 代码覆盖率

    我已经配置了一个 Nunit 测试运行程序构建步骤 该步骤成功运行我的测试套件 指向我的 Net 解决方案的测试子项目 例如 解决方案 Solution Test bin debug Solution Test dll 我的解决方案结构如下
  • 如何通过 CLI/Ruby 系统调用捆绑安装?

    是否可以通过 ruby 系统调用运行捆绑安装 我正在尝试安装 gems 并在另一个路径下运行项目测试 例如命令是 cd some other project bundle install gem list rspec spec 理想情况下
  • 如何获取与 PostgreSQL 中的视图或表关联的触发器

    我有一个要求 即我必须获取与给定表 视图关联的触发器列表 谁能帮我找到 PostgreSQL 中表的触发器 这将返回您想知道的所有详细信息 select from information schema triggers 或者如果您想对特定表
  • java.io.IOException:服务发现失败

    我正在开发一个 Android 应用程序 在两部配对的智能手机之间使用蓝牙连接 蓝牙逻辑基于著名的BluetoothChat SDK示例 管理服务器线程的 服务 类accept 一个客户端线程connect 和一个用于在套接字上读 写的线程
  • 如何在 Google 地图 v3 中的每个标记上添加编号?

    我想问大家如何使用 JavaScript 在 Google 地图 v3 中的每个标记上动态添加数字 例如 第一个标记是 1 第二个标记是 2 等等 在这种情况下 我的位置数据如下 new google maps LatLng 1 3667
  • 使用 ThreadCount TestNG 限制并行测试的数量

    我在这里很头疼 我不知道如何处理这个问题 我有几个通过 xml 运行的测试类 约90个测试班 每个班约10 Test进入其中 我配置了一个硒网格 带有maxSession 5因此 单个节点上最多可以并行运行 5 个并行浏览器实例 这是我不明
  • 重新编译asp.net网站时如何重新启动IIS站点

    添加到 Asp net 项目的构建 编译脚本中以启动 IIS 在 DLL 重建上重新启动网站而不是对网站的第一个请求的最佳方法是什么 当前流程 编译工程 Wait 点击 ASPX 页面 IIS 开始重新加载 Wait 页面加载 理想流程 编
  • 在 Bootstrap 中的悬停中打开折叠选项卡

    我在 Bootstrap 中有折叠面板 单击选项卡标题即可打开该面板 我试图弄清楚如何使用鼠标悬停在选项卡的总宽度上来打开 但我没有得到它 下面是默认关闭的单个选项卡的代码 div class panel panel default sty
  • 关于ListView中ViewHolder模式实现优化

    因此 众所周知的 ViewHolder 模式通常看起来像 ListAdapter Override public View getView final int position View convertView final ViewGrou
  • Android 三星 S I9000 屏幕尺寸和密度问题

    我在 Samsung S I9000 上使用应用程序时遇到问题 我的应用程序上的按钮比应有的大得多 此外 系统选择 res values small 作为值的来源 总而言之 它的表现就好像该设备有一个非常小的屏幕 尽管它应该是 800x48
  • Bootstrap 样式不适用于 Angular2 组件

    Bootstrap 样式不适用于 Angular2 组件 在以下 Angular2 组件中 它不能作为 ui 中的引导流体容器工作 如果我在带有 div 元素的组件内使用 container fluid 则会在作品中出现 例如 不工作 Co
  • 生成一定范围内的 N 个随机数,其总和为常数

    我想生成从 a b 之间的特定分布 例如均匀随机 抽取的 N 个随机数 其总和为常数 C 我尝试了一些我自己能想到的解决方案 以及在类似线程上提出的一些解决方案 但是他们中的大多数要么适用于有限形式的问题 要么我无法证明结果仍然遵循所需的分
  • 在 C# 中获取 Selenium RemoteWebDriver 的会话 ID

    我正在尝试获取在 SauceLabs 云上运行的测试的会话 ID 但我似乎无法访问它 我尝试过以下方法 Returns null var sessionId string RemoteWebDriver driver Capabilitie