2013-07-04 27 views
2

我試圖自動化網頁「http://www.quikr.com」,當我打開它時,會彈出一個窗口,首先顯示「請選擇您的位置「然後關閉它,我可以看到quikr的主頁。Selenium Webdriver - 如何關閉第一個彈出窗口並轉到實際頁面

我試圖通過自動關閉該彈出網頁,但沒能做到

使用XPath嘗試使用的className

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

使用ID

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

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

嘗試嘗試

請幫我這個

+0

當你嘗試它們時會發生什麼? – vidit

回答

1

由於這是一個JavaScript模式,當頁面加載完成後,JavaScript代碼仍然可以運行。解決方案是等待按鈕關閉模式顯示,關閉它,然後按照您的測試。像這樣:

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

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

測試自己,工作正常。

希望它有幫助。

+0

感謝大家的迴應,並感謝Code Enthusiastic,您的代碼片段爲我工作。 – user2549379

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

嘗試driver.findElement(By.Id("csclose")).click();我希望這將有助於

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

爲什麼使用「SET」? – user2044296

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 

你也可以使用follwing的XPath

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

下面的代碼對我的作品來處理硒的webdriver 只是複製拉網/警報將此代碼粘貼這是觸發拉網/警報即點擊保存後,在事件發生後。

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

} 
你的情況

嘗試在代碼BCZ的啓動運行這段代碼就會直接關閉彈出

0

簡單按下Alt + F4鍵爲我工作,如:

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