2017-05-31 70 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()