【发布时间】:2019-04-04 12:36:12
【问题描述】:
我无法点击某个元素,因为下拉菜单会遮挡所有其他元素。
在 Visual Studio 中使用 Selenium,我正在尝试构建一个测试用例,我首先单击下拉菜单中的复选框,然后单击下拉菜单之外的另一个元素。但是,单击第一个复选框后,下拉菜单不会自行关闭。
如果您在网络浏览器上手动关闭此下拉菜单,您只需按 Esc 或单击下拉菜单外的某个位置。但是当我尝试自动化它时它不起作用。
我曾尝试在脚本中像这样按 Esc 键:
Actions action = new Actions(driver);
action.SendKeys(OpenQA.Selenium.Keys.Escape);
但它不起作用。它不会发送有关发送 Esc 键的错误,而是在尝试单击被遮挡的元素时在下一行发送超时:
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 中不起作用,但它在 Selenium IDE 中起作用,只需使用命令 click 并将 //div[3]/div[3] 设置为目标。
我尝试使用 IDE 中的选择功能来识别下拉菜单中未包含的其他元素。我也尝试过使用萤火虫。但这是下拉菜单之外唯一可点击的元素。
总结一下:
如果我发送“Esc”的代码不正确,请告诉我。
为什么 Visual Studio 无法识别并单击
//div[3]/div[3],即在下拉菜单之外,而在 Selenium IDE 中可以做到这一点?还有其他方法可以关闭下拉菜单吗?
我已经读到,您始终可以单击使用 javascript 隐藏的元素,但我还没有找到如何在 C# 中执行此操作的指南。如果你们知道怎么做,请告诉我。
【问题讨论】:
-
您是否尝试过发送 TAB 以将焦点切换到新元素?那可能会关闭它。下拉菜单之外的某个地方是否有一个标题或一些纯文本元素,您可以单击它们不会触发另一个选项但会关闭下拉菜单?
标签: c# css selenium element sendkeys