Selenium with Python - 在弹出覆盖后切换到主要内容

时间:2016-07-25 09:59:49

标签: python selenium selenium-webdriver

处理弹出覆盖后,其余代码不再有效。

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

1 个答案:

答案 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()

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