2016-07-25 44 views
0

处理弹出式覆盖后,其余代码不再有效。Selenium with Python - 弹出式覆盖后切换到主要内容

from selenium import webdriver 
browser = webdriver.Firefox() 

browser.get('https://www.vapordna.com/login.asp') 

#handling popup 

browser.find_element_by_css_selector("div.age-verify-button.age-modal__btn.btn.btn-primary").click() 
browser.find_element_by_link_text("Yes").click() 

如果我不关闭弹出的代码的其余部分的作品,如果我这一点的作品后,要关闭代码的弹出式无。

emailElem = browser.find_element_by_name("email") 
emailElem.send_keys("****@****.com") 
passwordElem = browser.find_element_by_name("password") 
passwordElem.send_keys("******") 
passwordElem.submit() 

我曾尝试加入这一行,但它并没有帮助,

browser.switchTo().defaultContent(); 

据我了解弹出是不是一个新的iframe或窗口,所以我不知道为什么会有在继续与网页互动时遇到任何问题。

我也尝试一下在身上继续

browser.find_element_by_tag_name("body").click() 
+0

你是什么意思“不再可以与页面交互?” –

+0

当我尝试填写登录表单时没有任何反应。当我先运行代码而没有先关闭弹出窗口时,它会登录。后来的页面,所以我需要关闭它 – user99137

+0

我已经给出了答案尝试一下,并让我知道.. –

回答

0

看到你的网站后,我才注意到这既不是一个框架,也不是一个窗口,我只是一个形式,所以无需在这里使用browser.switchTo().defaultContent();它实际上用于从任何帧切换到默认值,实际上,当您要在打开的弹出页面上找到覆盖所有页面的这个按钮时,它不会被全部加载到页面上,所以您应该尝试使用WebDriverWait等到此按钮在页面上可见。

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

browser = webdriver.Firefox() 
browser.get('https://www.vapordna.com/login.asp') 

wait = WebDriverWait(driver, 10) 

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.age-verify-button.age-modal__btn.btn.btn-primary"))).click() 

现在点击此协议按钮后,您可以继续进行登录。

+0

谢谢,这不起作用遗憾。我的代码成功关闭弹出窗口,它是下一个部分,我已经编辑了我的问题,使它更清晰一些。 – user99137