См. Мою проблему.
- root.html нажмите ссылку
- popup.html и подтвердите, что окно открывается одновременно
- Мне нужнопринять подтверждение, но я не могу переключиться в всплывающее окно.
Я пытаюсь создать тестовый код, используя selenium WebDriver. Один из тестовых случаев, мне нужно принять окно подтверждения, но я не могу. Я не кислая, но селен не может переключиться на окно, которое подтверждает.
ROOT.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>root window</title>
</head>
<body>
<script type="text/javascript">
function orderpay() {
var type = "popup";
document.orderpay.poptype.value = type;
paypop = window.open("about:blank", "orderpay", "width=620,height=550, scrollbars=yes").focus();
document.orderpay.submit();
}
</script>
<form name="orderpay" id="orderpay" action="./popup.html" method="post" target="orderpay">
<input type="hidden" name="poptype" value="">
</form>
<a href="javascript:orderpay();"> ::popup window open:: </a>
</body>
</html>
POPUP.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>popup window</title>
</head>
<script type="text/javascript">
function showConfirm(){
confirm("could you close me?");
alert("this is alert window.");
}
</script>
<body onload="showConfirm()">
<b>hello world</b>
</body>
</html>
ТЕСТ-КОД
class ConfirmWindowTest {
fun ifHasAlertClickOk(driver: WebDriver) {
try {
val alert = driver.switchTo().alert()
alert.accept()
sleep(1)
} catch (e: Exception) {
//e.printStackTrace()
}
}
@Test
fun closeConfirm() {
var driver: WebDriver
driver = ChromeDriver()
driver.get("file:///{your file location}/root.html")
//when this link click, popup.html will be opened
driver.findElements(By.tagName("a")).first().click()
//store root window handel
val root = driver.windowHandle
try {
val handles = driver.windowHandles.filter { it != root }.toList()
println(root)
println(handles)
handles.forEach {
//I want to switch popup window and close confirm and alert but it doesn't work.
driver.switchTo().window(it)
ifHasAlertClickOk(driver)
ifHasAlertClickOk(driver)
println("ok it works")
}
} catch (e: Exception) {
e.printStackTrace()
} finally {
driver.switchTo().window(root)
}
}
}
Теперь это не могло пройти driver.switchTo().window(it)
, но я хочу увидеть, "хорошо, это работает", наконец.