我在angularJS应用程序中遇到md-dialog弹出问题,我无法在selenium中单击。当我单击一个按钮时,对话框出现并成为屏幕上的活动元素,使背景变暗。我尝试过switchTo与活动元素,框架,警报,这些似乎都没有。我最近的尝试是尝试使用以下代码交换窗口:
winHandleBefore = driver.getWindowHandle();
Set<String> numOfWindows = driver.getWindowHandles();
System.out.print(numOfWindows.size());
for(String winhandle : driver.getWindowHandles())
{
driver.switchTo().window(winhandle);
report.updateTestLog("Switched to window", "", Status.PASS);
}
大小的S.o.p总是输出为1.在弹出窗口之前点击初始按钮后等待,以确保它有适当的时间出现。不知道还有什么可做的,我一直在网上搜索答案,我没有遇到任何让我点击弹出窗口中的元素的东西
编辑:这是md-dialog的html
<md-dialog class="quote _md md-transition-in" aria-label="Summary" role="dialog" tabindex="-1" id="dialogContent_78" aria-describedby="dialogContent_78" style="">
编辑2:忘了说,我试图点击md-dialog弹出窗口内的按钮
编辑3:在仔细检查代码之后,我注意到md-dialog弹出窗口有一个占用整个屏幕的容器div,而且它也是从另一个文件调用html。容器div html:<div class="md-dialog-container ng-scope" tabindex="-1" style="top: 972px; height: 769px;">
答案 0 :(得分:0)
如果有人有相同的问题,弹出窗口即使已经出现在屏幕上也会注册为隐藏,因此任何单击按钮的尝试都是徒劳的,因为按钮被视为隐藏。解决方法是使用findElement()方法找到按钮,将其分配给变量,然后使用javascriptExectutor单击它,即使它被隐藏。如果您尝试重现用户输入,这是不理想的,但它是一种解决方法。代码如下。
WebElement hiddenButton = driver.findElement(uniqueIdentifier);
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", hiddenButton);
report.updateTestLog(flowName, uniqueIdentifier + " Hidden Button Pressed", Status.DONE);
希望这有助于任何找到它的人。