Как переключить дескриптор на всплывающее окно с окном подтверждения - PullRequest
0 голосов
/ 21 октября 2019

См. Мою проблему.

  1. root.html нажмите ссылку
  2. popup.html и подтвердите, что окно открывается одновременно
  3. Мне нужнопринять подтверждение, но я не могу переключиться в всплывающее окно.

Я пытаюсь создать тестовый код, используя 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), но я хочу увидеть, "хорошо, это работает", наконец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...