2014-11-25 83 views
0

我参与了一个项目,该项目涉及记录到安全网站并通过单击页面内的一个元素来下载文件,然后显示一个对话框,其中“确定”按钮具有点击以保存框。我编写了所有相关的步骤来达到并点击生成保存文件对话框的按钮。在Python中使用Selenium捕捉iframe对话框

我有Python的3.4.1 32位使用Mozilla Firefox 33.一个Windows 7 64位机采用硒我试图获得该对话框也就是代码上:

<!DOCTYPE html> 
 
    <html id="ext-gen3" class=" ext-strict x-viewport" decorator="blank"> 
 
     <head></head> 
 

 
     <body id="ext-gen4" class="ext-gecko3 cwc-view x-border-layout-ct" onload="cwc.getFrameworkWindow()"> 
 

 
      <div id="cwc_header" class=" masthead x-border-panel" style="left: 0px; top: 0px; width: 1366px; height: 27px;"></div> 
 

 
      <div id="cwcNavPanel" class=" x-panel cwc-navPanel x-border-panel" style="width: 220px; left: 0px; top: 56px;"></div> 
 

 
      <div id="cwcCenterPanel" class=" x-tab-panel cwc-centerPanel x-border-panel" style="left: 228px; top: 35px; width: 1138px;"></div> 
 

 
      <!--Telephony Applet --> 
 

 
      <iframe id="ext-gen358" class="ext-shim" frameborder="0" src="/sm/js/9.33.4005/extjs/resources/images/default/s.gif" style="display: none; visibility: visible; z-index: 14998; left: 617px; top: 87px; width: 170px; height: 246px;"></iframe> 
 

 
      <div id="ext-comp-512057" class="x-tip" style="position: absolute; z-index: 20002; visibility: hidden; width: 74px; left: 672px; top: 89px; display: none;"></div> 
 

 
      <div id="cwcNavPanel-xsplit" class="x-layout-split x-layout-split-west x-unselectable x-splitbar-h" style="left: 220px; top: 56px; height: 351px;"></div> 
 

 
      <div id="ext-gen54" class=" x-unselectable x-splitbar-proxy x-splitbar-proxy-h"></div> 
 

 
      <div id="ext-gen359" style="position: absolute; left: -1000px; top: -1000px; visibility:…; text-transform: none; letter-spacing: normal; width: auto;"></div> 
 

 
      <div id="ext-gen76" class="x-shadow" style="z-index: 20000; left: 634px; top: 185px; width: 98px; height: 38px; display: none;"></div> 
 

 
     </body> 
 
    </html>

如何捕捉弹出的警告框?

我曾尝试做:

try: 
    alert = driver.switch_to_alert() 
    alert.accept() 
except Exception as E: 
    print("Exception occured:", E) 

但它总是给我,没有警报发现异常。如果出现的对话框是“iframe”,那该怎么办?

谢谢你的帮助!

我使用秒的时间足够量的等待我尝试之前发生的对话框,并使用“警报”

使用切换到对话框后抓住它,

driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) 

(我不知道它是否确实选择了对话框,我不知道如何选择它)

如何单击“确定”保存文件。我无法查看此对话框的源代码。

谢谢!

回答

0
#for iframes: 
driver.switch_to_frame(driver.find_element_by_tag_name("iframe")) #switching to iframe 
element = driver.find_elements_by_css_selector(".some_inside_iframe") 
#do something 

driver.switch_to_default_content() #back into default content 

,如果你需要处理警告驾驶员,你可以检查:

from selenium.webdriver.support import expected_conditions 

,并通过“警示存在”条件

而且,如果警报需要一些时间,你可以做到这一点之前警报正在打开:

import time 

time.sleep(3) #allow driver to wait before alert is present 
#you code for alert here 
+0

我已更新我的问题。请建议。谢谢!! – Arun 2014-11-27 10:41:30