【问题标题】:Catch an iframe dialog box using Selenium in Python在 Python 中使用 Selenium 捕获 iframe 对话框
【发布时间】:2015-01-23 12:05:19
【问题描述】:

我参与了一个项目,该项目涉及登录到安全网站并通过单击页面中的元素下载文件,然后显示一个对话框,必须单击“确定”按钮以保存该框。我已经编写了所有相关步骤,以达到并单击生成“保存文件”对话框的按钮。

我在使用 Mozilla Firefox 33 的带有 Selenium 的 Windows 7 64 位机器上安装了 Python-3.4.1 32 位。我尝试获取以下对话框的代码:

    <!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"))

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

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

谢谢!!

【问题讨论】:

    标签: javascript python firefox iframe selenium


    【解决方案1】:
    #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
    

    如果需要在驱动中处理Alert,可以查看:

    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
    

    【讨论】:

    • 我已经更新了我的问题。请建议。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    相关资源
    最近更新 更多