【问题标题】:How can i handle popups in playwright-java?我如何处理 playwright-java 中的弹出窗口?
【发布时间】:2021-06-08 18:53:00
【问题描述】:

如何在 playwright-java 中处理警报和弹出窗口? API中有不同的方法,如page.onDialog()、page.onPopup(),它们有什么区别,如何生成句柄?

//code to launch my browser and url
            Playwright playwright = Playwright.create();
            Browser browser = playwright.chromium().launch(new LaunchOptions().withHeadless(false).withSlowMo(50));
            BrowserContext context = browser.newContext();
            Page page = context.newPage();
            page.navigate("http://myurl.com");
    
//had to switch to iframe to click on upload button
            Frame mypage = page.frameByName("uploadScreenPage");
    
//below line is triggering the alert
            mypage.setInputFiles("//*[@id='fileUpload']",Path.of("C:\\myFile.jar"));
            
//using this code to handle alert, which is not working
            page.onDialog(dialog -> {dialog.accept();});

无法使用上述代码接受警报。单击 iframe 内的元素后也会发生警报。我该如何处理此类警报?

【问题讨论】:

    标签: webautomation playwright


    【解决方案1】:

    我很高兴回答这个问题。我遇到了同样的情况并找到了解决方案。请看下面:

    //处理弹窗或新页面

    Page pgdriver1 = pagedriver.waitForPopup(new Runnable()
    {
            public void run() {
            pagedriver.click("text=\"Analiza\""); 
            }
        });
    
    pgdriver1.click("//button[normalize-space(@aria-label)=\"Close dialog\"]/nx-icon"); 
    

    我希望这能回答你的问题。

    【讨论】:

      【解决方案2】:
      //listening to the alert
      page.onDialog(dialog -> {dialog.accept();});
      
      //next line will be action that triggers your alert
      page.click("//['clickonsomethingthatopensalert']")
      

      【讨论】:

      • 您需要解释问题是什么以及您的答案如何解决问题。只是粘贴代码不是答案。
      【解决方案3】:

      Dialogs 是类似于alertconfirm 的消息,而popups 是新页面,就像您通过调用window.open 获得的页面一样。

      你可以这样使用它:

      page.onDialog(dialog -> {
          assertEquals("alert", dialog.type());
          assertEquals("", dialog.defaultValue());
          assertEquals("yo", dialog.message());
          dialog.accept();
      });
      page.evaluate("alert('yo')");
      

      【讨论】:

      • 感谢您的回复,我已经用确切的场景编辑了问题。你有什么解决办法吗?
      猜你喜欢
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 2020-04-09
      • 1970-01-01
      • 2017-01-08
      • 2021-01-11
      相关资源
      最近更新 更多