2017-05-31 84 views
1

我無法使用Selenium關閉彈出框。下面是我寫的代碼,它會返回一個異常。請參閱下面的代碼。無法使用Selenium關閉彈出框

driver = webdriver.Chrome() 
driver.get("https://www.google.com/webhp#q=home+depot+san+francisco&lrd=0x808f7c5c63124c7b:0x32c19e9988b2aa90,1,") 
driver.find_element_by_xpath('//div[@class="_wzh"]').click() 
# selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 

感謝,

回答

0

不要試圖點擊元素,你應該使用內置的支持。 以下應該工作。

alert = driver.switch_to_alert() 
alert.accept 

Docs

+1

很好的回答。但我猜downvote是因爲OP沒有試圖關閉瀏覽器警報,而是模擬相同的「模式對話框」。 –

+0

@JohnMee - 謝謝!我沒有看到實際的頁面。根據我對這個問題的回答。 – Amit

0

這是因爲元件是存在於一個標籤;所以首先你需要切換到iframe中,然後與要素互動:

driver.switch_to.frame driver.find_element_by_css(' #gsr > iframe') 

然後單擊元素:

driver.find_element_by_xpath('//div[@class="_wzh"]').click() 
1

這需要一些時間來打開彈出窗口。所以你需要等待幾秒鐘,直到彈出窗口打開並關閉按鈕變得可見。

用戶Explicitwait狀態,直到元素的可視性象下面這樣:

element = WebDriverWait(driver, 60).until(
    EC.visibility_of_element_located((By.CSS_SELECTOR, "div>._wzh")) 
) 
element.click()