使用selenium直接在实际窗口中访问特定URL时Web元素工作正常,我可以对这些元素执行操作,但是在登录系统后执行相同URL的相同代码时动作(这次在弹出窗口中打开相同的屏幕(模态对话框))和selenium命令,如(单击)不起作用,并且控制台上没有异常或错误消息。
案例#1:使用实际浏览器直接访问URL并执行点击操作: Please refer to UI in this case#1
driver.switchTo().frame("myframe");
if(driver.findElement(nextButton).isDisplayed()) {
driver.findElement(nextButton).click();
System.out.println("Next button enabled on Clicked");
} else {
System.out.println("Next button NOT Clicked");
}
控制台结果:单击下一个按钮 实际结果:在UI上执行的操作
案例#2:登录系统后访问相同的URL,根据系统功能,相同的URL将在模型窗口中打开,然后执行单击操作: Please refer to UI in case#2
driver.switchTo().frame("myframe");
if(driver.findElement(nextButton).isDisplayed()) {
driver.findElement(nextButton).click();
System.out.println("Next button enabled on Clicked");
} else {
System.out.println("Tool button enabled But NOT Clicked");
}
控制台结果:单击下一个按钮 实际结果操作未在UI上执行): - (
这是HTML代码,其中出现了元素ID:
<html>
<body>
<iframe>
<html>
<body>
<.......Some other elemets defined here......>
<div id="nextButton" title="Next (N)" class="playerSp next-button" hoverstyle="next-button-over" clickevent="nextButton" keycode="78" tabindex="2" style="display: block; background-image: url("../../../common_core/media/images/orange_skin/orange_sprite.png");"></div>
<.......Some other elemets defined here......>
</body>
</html>
</iframe>
</body>
</html>
答案 0 :(得分:1)
当您说“弹出窗口”时,不确定您是指模态窗口还是实际的新浏览器窗口,但如果“基本”窗口和“弹出窗口”窗口中存在相同的按钮,则Selenium很可能会单击基本窗口上的按钮而不是弹出窗口。
如果“弹出窗口”是模式对话框,则需要确保元素定位器在弹出窗口打开时返回唯一元素。如果定位器匹配多个元素,Selenium将仅在匹配的第一个元素上运行。
如果“弹出窗口”是一个实际的新浏览器窗口,则需要能够将焦点切换到该窗口。如果新窗口没有窗口ID,这可能会很棘手。这个空间太小,无法解释如何做到这一点:)但你应该能够查找它。