关于selenium如何控制窗口弹出

时间:2016-07-22 18:11:36

标签: java selenium-webdriver selenium-grid

我正在使用Selenium IDE。我尝试搜索三星s3图像,右键单击一个图像,然后单击保存图像,然后一个窗口来了,我不知道如何单击保存按钮他们的。 我的代码就是这个

     WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.google.com");

    driver.findElement(By.id("lst-ib")).clear();
    driver.findElement(By.id("lst-ib")).sendKeys("samsung s3 picture");
    driver.findElement(By.name("btnG")).click();
    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
    driver.findElement(By.linkText("Images for samsung s3")).click();
    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
    WebElement image=driver.findElement(By.name("JJJ3gKgkvtZE4M:"));


    Actions action= new Actions(driver);
    action.contextClick(image).build().perform();
    action.sendKeys(Keys.CONTROL, "v").build().perform();

      Robot robot = new Robot();

      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);
      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);
      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);
      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);
      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);
      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);
      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);
      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);
      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);
      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);
      robot.keyPress(KeyEvent.VK_DOWN);
      robot.keyRelease(KeyEvent.VK_DOWN);

      // To press Save button.
      robot.keyPress(KeyEvent.VK_ENTER);
      robot.keyRelease(KeyEvent.VK_ENTER);


      Alert alt=driver.switchTo().alert();
      Thread.sleep(3000);
      alt.accept();

我想点击该保存按钮

3 个答案:

答案 0 :(得分:0)

保存图像时显示的弹出窗口由OS提供,而不是由浏览器提供。基于操作系统的弹出窗口无法使用selenium自动化,因为它仅与浏览器进行交互。您可以使用AutoIT工具自动执行基于窗口的弹出窗口。希望它有所帮助!

答案 1 :(得分:0)

控制此类OS相关事件的最佳方法是使用Robot类。

       Robot robot = new Robot();  // Robot class throws AWT Exception  
       Thread.sleep(2000); // Thread.sleep throws InterruptedException  
       robot.keyPress(KeyEvent.VK_DOWN);  // press arrow down key of keyboard to navigate and select Save radio button  

       Thread.sleep(2000);  // sleep has only been used to showcase each event separately   
       robot.keyPress(KeyEvent.VK_TAB); 
       Thread.sleep(2000);  
       robot.keyPress(KeyEvent.VK_TAB); 
       Thread.sleep(2000);  
       robot.keyPress(KeyEvent.VK_TAB); 
       Thread.sleep(2000);  
       robot.keyPress(KeyEvent.VK_ENTER);   
   // press enter key of keyboard to perform above selected action  

答案 2 :(得分:0)

您不需要使用Robot下载图像! 有更优雅,更快捷的方法。 例如,您可以创建自定义Firefox配置文件并根据mimetype自动下载..

已经有大量有关此问题的答案,例如:access-to-file-download-dialog-in-firefox

您还可以查看值得阅读的this链接。