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

时间:2013-07-04 08:13:37

标签: selenium webdriver

我正在尝试自动化网页“http://www.quikr.com”,当我打开此页面时,您将首先看到一个弹出窗口,上面写着“请选择您的位置”,然后关闭它后,我可以看到主页quikr。

我尝试通过自动关闭该弹出页面,但无法执行

尝试使用xpath

 driver.findElement(By.xpath("//*[@id='csclose']/strong")).click();

尝试使用className

 driver.findElement(By.className("cs-close cs-close-v2")).click();

尝试使用id

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

请帮我解决这个问题

7 个答案:

答案 0 :(得分:2)

关闭webdriver中的多个弹出窗口并切换到父窗口

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();

答案 1 :(得分:2)

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

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

}

在您的情况下,您尝试在代码bcz的启动时运行此代码,它将直接关闭弹出窗口

答案 2 :(得分:1)

由于这是一个JavaScript模式,当页面完成加载时,JavaScript代码仍然可以运行。解决方案是等待关闭模式的按钮显示,关闭它然后按照测试。像这样:

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

        driver.FindElement(By.Id("csclose")).Click();

自己测试并且工作正常。

希望它有所帮助。

答案 3 :(得分:1)

我在红宝石中尝试过,这个有效 看看这是否可以以任何方式帮助你:)

require 'selenium-webdriver'
require 'test/unit'
require 'rubygems'

class Tclogin < Test::Unit::TestCase                                                        #------------ define a class----------------

    def setup
    @@driver = Selenium::WebDriver.for :firefox                                         
    @@driver.navigate.to "http://www.quikr.com"                 #---- call url----
    @@wait = Selenium::WebDriver::Wait.new(:timeout => 60) # seconds                     #----define wait------
    end

    def test_login
     @@driver.find_element(:css, "strong").click
    end
end

您也可以使用以下xpath

@@driver.find_element(:xpath, "//a[@id='csclose']/strong").click

答案 4 :(得分:0)

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");
    }

答案 5 :(得分:0)

尝试driver.findElement(By.Id("csclose")).click();我希望这会有所帮助

答案 6 :(得分:0)

简单按下Alt + F4按钮对我有用,例如:

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