Selenium Webdriver-如何关闭第一个弹出窗口并转到实际页面

Selenium Webdriver-如何关闭第一个弹出窗口并转到实际页面,selenium,webdriver,Selenium,Webdriver,我正在尝试将网页“”自动化,当我打开此网页时,您将看到一个弹出窗口,首先显示“请选择您的位置”,然后关闭后,我可以看到quikr的主页 我试图通过自动关闭弹出页面,但没有成功 尝试使用xpath driver.findElement(By.xpath("//*[@id='csclose']/strong")).click(); 尝试使用类名 driver.findElement(By.className("cs-close cs-close-v2")).click(); 尝试使用id

我正在尝试将网页“”自动化,当我打开此网页时,您将看到一个弹出窗口,首先显示“请选择您的位置”,然后关闭后,我可以看到quikr的主页

我试图通过自动关闭弹出页面,但没有成功

尝试使用xpath

 driver.findElement(By.xpath("//*[@id='csclose']/strong")).click();
尝试使用类名

 driver.findElement(By.className("cs-close cs-close-v2")).click();
尝试使用id

  driver.findElement(By.id("csclose")).click();

请帮我做这个

,因为这是一个JavaScript模式,当页面加载完毕时,JavaScript代码可能仍在运行。解决方案是等到显示关闭模式的按钮,关闭它,然后进行测试。像这样:

        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
        wait.Until(ExpectedConditions.ElementIsVisible(By.Id("csclose")));

        driver.FindElement(By.Id("csclose")).Click();
测试了我自己,效果很好


希望有帮助。

尝试
driver.findElement(By.Id(“csclose”))。单击()我希望这将有助于关闭webdriver中的多个弹出窗口并切换到父窗口

public void closePopup() throws Exception {
        WebDriver driver = new InternetExplorerDriver();
        driver.get("http://www.quikr.com/");
        WebDriverWait wait = new WebDriverWait(driver, 20);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("csclose"))).click();
        System.out.println("Successfully closed the start Popup");
    }
String parent = driver.getWindowHandle();

        Set<String> pops=driver.getWindowHandles();
        {
        Iterator<String> it =pops.iterator();
        while (it.hasNext()) {

            String popupHandle=it.next().toString();
            if(!popupHandle.contains(parent))
            {
            driver.switchTo().window(popupHandle);
            System.out.println("Popu Up Title: "+ driver.switchTo().window(popupHandle).getTitle());
            driver.close();
String parent=driver.getWindowHandle();
设置pops=driver.getWindowHandles();
{
迭代器it=pops.Iterator();
while(it.hasNext()){
字符串popupHandle=it.next().toString();
如果(!popupHandle.contains(父级))
{
driver.switchTo()窗口(popupHandle);
System.out.println(“弹出标题:+driver.switchTo().window(popupHandle.getTitle());
driver.close();

我在ruby中试用过,这一款很管用 看看这是否对您有任何帮助:)


以下代码适用于我处理SeleniumWebDriver中的弹出/警报 只需在触发弹出/警报的事件后,即单击“保存”后复制粘贴此代码

if(driver.switchTo().alert() != null)
{
    Alert alert = driver.switchTo().alert();
    String alertText = alert.getText();
    alert.dismiss(); // alert.accept();

}

在您的情况下,如果您尝试在代码bcz的开头运行此代码,它将直接关闭弹出窗口

只需按Alt+F4按钮即可,例如:

        driver.findElement(By.cssSelector("html body div div img")).sendKeys(Keys.chord(Keys.ALT, Keys.F4));

当您尝试它们时会发生什么?感谢大家的响应,感谢代码热情,您的代码对我很有用。为什么使用“SET”呢?SET是selenium中的类,用于将所有窗口存储为字符串
if(driver.switchTo().alert() != null)
{
    Alert alert = driver.switchTo().alert();
    String alertText = alert.getText();
    alert.dismiss(); // alert.accept();

}
        driver.findElement(By.cssSelector("html body div div img")).sendKeys(Keys.chord(Keys.ALT, Keys.F4));