前言:
当前各位老铁们对“html页面弹出框”大约比较关心,小伙伴们都想要剖析一些“html页面弹出框”的相关资讯。那么小编也在网摘上搜集了一些有关“html页面弹出框””的相关知识,希望姐妹们能喜欢,咱们一起来学习一下吧!背景
最近python比较火,想自学下,写了一个简单的打开网页点击网页
问题
首先打开一个网页
driver = webdriver.Chrome('D:\chromedriver.exe')driver.maximize_window()driver.get(";)
然后点击链接,打开另外一个网页
driver.find_element_by_xpath('/html/body/a').click()
这个网页就会过一段时间弹出一个alert窗口
识别这个弹窗,然后点击确定
wait = WebDriverWait(driver, 2) # wait.until(EC.alert_is_present()) # a1 = Alert(driver) a1 = driver.switch_to.alert time.sleep(2) a1.accept()
问题来了,尝试了很多次,都识别不了,一直报错
解决
先梳理下是否是代码问题,百度了很多,都是这样处理的,就算是判断alert窗口是否存在也是通过是否有异常来判断;然后试试只有一个窗口,直接打开test.html;发现并没有报错,而且成功了;alert识别了,确定按钮也点击了
说明是因为在点击链接的时候,跳转了新的窗口,而程序还是定位在index.html页面的窗口,导致无法识别alert弹出窗口;就只要在点击到新窗口后就定位到新窗口问题不就解决了么;开干,在点击后加入定位到新窗口的代码:
handle_all = driver.window_handles # 只有2个窗口时for h in handle_all: if h != handle_main: handle_new = hdriver.switch_to.window(handle_new)
然后重新运行程序,问题解决!
附整体代码:
driver = webdriver.Chrome('D:\chromedriver.exe')driver.maximize_window()driver.get(";)handle_main = driver.current_window_handledriver.find_element_by_xpath('/html/body/a').click()handle_all = driver.window_handles # 只有2个窗口时for h in handle_all: if h != handle_main: handle_new = hdriver.switch_to.window(handle_new)while True: try : wait = WebDriverWait(driver, 2) # wait.until(EC.alert_is_present()) # a1 = Alert(driver) a1 = driver.switch_to.alert time.sleep(2) a1.accept() time.sleep(2) driver.find_element_by_xpath('//*[@id="alert"]').click() a1 = driver.switch_to.alert time.sleep(2) except Exception as ex: print(ex) time.sleep(5)
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #html页面弹出框