c# - 为“FindElementByID”按 click() 后出现异常
问题描述
为“FindElemebtByID”按 click() 后出现异常。我得到这个例外:
错误 CS1061“ReadOnlyCollection”不包含“Click”的定义,并且找不到接受“ReadOnlyCollection”类型的第一个参数的可访问扩展方法“Click”(您是否缺少 using 指令或程序集引用?)
我的代码是:
var EQ = DesktopSession.FindElementByName(@"C:\Users");
var EQWindowHandle = EQ.GetAttribute("NativeWindowHandle");
EQWindowHandle = (int.Parse(EQWindowHandle)).ToString("x");
EQWindowHandle = "0x" + EQWindowHandle;
DesiredCapabilities EQcapabilities = new DesiredCapabilities();
EQcapabilities.SetCapability("appTopLevelWindow", EQWindowHandle);
var EQSession = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), EQcapabilities);
EQSession.FindElementsById("7.8556.12446183").Click();
谢谢
解决方案
FindElementsById
返回一个ReadOnlyCollection
。
在尝试调用 click 之前,您需要从集合中选择相关项目。
这将获取返回的第一个项目,然后调用单击它。
var elements = EQSession.FindElementsById("7.8556.12446183");
var element = elements.FirstOrDefault();
if (null != element)
element.click();
或者,如果您始终确定只有一个具有 Id 的元素7.8556.12446183
,或者您想使用具有该 Id 的第一个元素(实际上不应该超过一个),那么您可以FindElementById
改为使用以下。
var element = EQSession.FindElementById("7.8556.12446183");
if (null != element)
element.click();
推荐阅读
- google-cloud-platform - 有没有办法在模拟服务帐户时使用 gsutil?
- websocket - Squid4 转发代理从 ws 升级到 wss
- javascript - 防止数组在文本输入上循环并从该数组中提取值 | Vue
- jquery - 我想将“id”发送到coldfusion变量以执行一些查询
- c# - 在 asp.net mvc 应用程序中在哪里编写“处理代码”?
- python - 按字典中键的值组合两个字典列表
- common-lisp - 由两个管道包围的关键字符号
- javascript - for 循环和事件
- javascript - Api PUT 请求显示为“已取消”并显示错误消息“TypeError: failed to fetch”
- cuda - 如何让 malloc 出现在 nvprof 的统计分析器中?