How to close a permanent element obscuring other elements?(如何关闭永久元素以遮挡其他元素?)
问题描述
我无法单击某个元素,因为下拉菜单遮挡了所有其他元素。
在Visual Studio中使用Selify,我正在尝试构建一个测试用例,在该测试用例中,首先单击下拉菜单中的一个复选框,然后单击该下拉菜单外的另一个元素。但是,在您单击第一个复选框后,下拉菜单不会自动关闭。 如果您在Web浏览器上手动关闭此下拉菜单,您只需按Esc键或只需单击下拉菜单之外的某个位置。但当我尝试将其自动化时,它不起作用。
我尝试在脚本中按Esc-键:
Actions action = new Actions(driver);
action.SendKeys(OpenQA.Selenium.Keys.Escape);
但它不起作用。它不会发送有关发送Esc-Key的错误,而是在尝试单击被遮挡的元素时在下一行发送超时:
OpenQA.Selenium.ElementClickInterceptedException : Element <div class="mat-radio-outer-circle"> is not clickable at point (116,608) because another element <div class="cdk-overlay-backdrop cdk-overlay-transparent-backdrop cdk-overlay-backdrop-showing"> obscures it
我还尝试不发送Esc-键,而是在下拉菜单外单击,如下所示:
wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//div[3]/div[3]"))).Click();
这在Visual Studio中不起作用,但在Selify IDE中确实起作用,只需使用命令Click并将//div[3]/div[3]
设置为目标。
Selenium IDE Example
我尝试使用IDE中的SELECT函数来识别下拉菜单中未包括的其他元素。我也尝试过使用FireBug。但这是下拉菜单之外唯一可点击的元素。
Firebug view
总结:
请告诉我我发送"Esc"的代码是否错误。
为什么Visual Studio无法识别并单击
//div[3]/div[3]
(即在下拉列表之外),而它可以在Selify IDE中进行识别和单击?是否有其他关闭下拉菜单的方法?
我读到过,您总是可以点击使用javascript隐藏的元素,但我还没有找到C#中如何做到这一点的指南。如果你们知道怎么做,请告诉我。
推荐答案
这种情况下的解决方案是单击遮挡页面其余部分的元素:
driver.FindElement(By.CssSelector(".cdk-overlay-backdrop.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing")).Click();
当我执行此操作时,下拉菜单关闭。
注意:我必须使用CSSSelector的另一种格式才能标识该元素。
在我之前收到的错误消息中,Visual Studio将模糊元素写成这样:
cdk-overlay-backdrop cdk-overlay-transparent-backdrop cdk-overlay-backdrop-showing
但我不能简单地将其复制到CSSSelector中,似乎您总是必须添加一个"。,并将元素名称中的任何空格替换为"."
这样:
.cdk-overlay-backdrop.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing
这篇关于如何关闭永久元素以遮挡其他元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何关闭永久元素以遮挡其他元素?


- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 输入按键事件处理程序 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01