处理弹出覆盖后,其余代码不再有效。
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)
看到你的网站后,我发现这不是一个框架,也不是一个窗口,我只是一个表格,所以不需要在这里使用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()
现在点击此协议按钮后,您可以继续进行登录步骤。