使用webdriver处理硒中的灯箱/灯窗口

时间:2016-03-16 12:29:52

标签: java selenium selenium-webdriver

我一直在尝试在网站上自动化某个流程,但每当我导航到该网站时,会出现一个灯箱/窗口,因为我的元素未被选中。

我尝试了两种方法来关闭窗口,但它们都没有工作:

  1. 尝试使用弹出式关闭方法关闭窗口。
  2. 尝试过Frames方法,但也不行。
  3. 以下是我的代码:

    import java.util.Iterator;
    import java.util.List;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    
    public class Handle_Windows_popUP {
    
        static WebDriver driver = null;
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
    
            System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"\\Drvier\\chromedriver.exe");
            driver = new ChromeDriver();
            driver.manage().window().maximize();
            driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
            driver.get("http://www.makemytrip.com");
    
            Set<String> id = driver.getWindowHandles();
            Iterator<String> itr = id.iterator();
    
            System.out.println(id.size());
    
            while(itr.hasNext())
            {
                Object element = itr.next();
                System.out.println("id: "+element);
    
            }
    
    // Trying to find the 'X' button if present in any of the frame but none of the frame has it            
    
            List<WebElement> ls = driver.findElements(By.tagName("iframe"));
            System.out.println("Numberof frames:"+ls.size());
    
            for(int i=0;i<ls.size();i++)
            {
                driver.switchTo().frame(i);
                System.out.println("Frame: "+i);
                System.out.println(driver.findElements(By.xpath("*[@id='htmlDoc']/body/div[13]/div/a[1]")).size());
                driver.switchTo().defaultContent();
            }
    
    
    // The Pop-up approach
    
            String parent_Window = itr.next();
            String child_win = null;
    
            while(itr.hasNext())
            {
                child_win = itr.next();
                driver.switchTo().window(child_win);
                driver.close();
    
            }
    
            driver.switchTo().window(parent_Window).getTitle();
    
        }
    
    }
    

1 个答案:

答案 0 :(得分:0)

因为如果你刷新浏览器这很好,我建议你不要使用任何其他代码。但是,如果您想知道如何在没有刷新浏览器的情况下关闭窗口,请在启动后编写以下代码:

//wait until the browser loaded.
//than use this code
driver.findElement(By.cssSelector("div.appfest_container.appfest_container-bg.visible-md.visible-lg >a.appfest_container-close.pull-right.clearfix")).click();

我的css路径很长,但您可以使用xpath更改它。

//*[@id="htmlDoc"]/body/div[13]/div/a[1]

希望你能接受答案。