【问题标题】:Selenium unable to locate my elements(buttons) [duplicate]Selenium 无法找到我的元素(按钮)[重复]
【发布时间】:2019-06-28 23:03:06
【问题描述】:

我想使用 selenium 按下按钮,昨天我遇到了一个问题,我无法做到这一点,结果发现我的按钮位于环绕整个网页的 iframe 内。这修复了它:

from time import sleep
driver.switch_to.frame(driver.find_element_by_id("includedPage"))
sleep(10)
element = driver.find_element_by_xpath("//input[contains(@id, 'workbenchLst:j_id_id507') and @value='Add']")
element.click()

点击它后,我想对页面上的其他按钮执行相同操作,但我不能一直为 iframe 和页面中的所有其他元素获取Unable to locate element(该页面在 td 内也有一个 iframe像这样):

<td id="rightTdId">                                 
                                    <iframe id="includedPage" style="width:100%;" onload="reRenderReportLOV();;tickleSession('pageNavigation:sessionLink');disableContextMenu();showHidPanelMenu('hide','leftMenuj_id_1');" name="includedPage" src=".." marginheight="0" marginwidth="0" height="531" frameborder="0"></iframe>
                                </td>

如何在该页面中获取我的按钮并在找到它后禁用 iframe 的效果?

【问题讨论】:

  • 第一页中的 iframe 将其全部圈出(所有内容都在其中),之后的页面共享相同的 iframe id 和 url 但它是不同的内容,所以我会说不不同的 iframe。

标签: python selenium selenium-webdriver xpath css-selectors


【解决方案1】:

如果两个按钮属于不同的不同 iframe,您必须将 web 驱动程序的焦点切换到父级,然后再次将其切换到第二个 iframe。像这样的东西:

driver.switch_to.frame(driver.find_element_by_id("includedPage"))
sleep(10)
element = driver.find_element_by_xpath("//input[contains(@id, 'workbenchLst:j_id_id507') and @value='Add']")
element.click()

driver.switch_to.default_content()  

driver.switch_to.frame(driver.find_element_by_id("id of different iframe"))

element2 = driver.find_element_by_xpath(" xpath of 2nd button")
element2.click()

【讨论】:

    【解决方案2】:

    当你点击了iframe,需要回到prev frame或者default frame时,应该使用driver.switch_to.default_content(),然后点击默认内容上的按钮即可。

    这会将上下文切换到默认框架,您将能够再次对其进行操作。

    【讨论】:

    • 您能否在我上面共享的代码中添加它,以确定在哪个阶段添加它,谢谢。
    • Steve,您可以在找到要单击的元素(即按钮)之前添加它
    • 你可以driver.switch_to.frame(driver.find_element_by_id("includedPage"))然后点击iframe上的元素可以使用element.click()然后如果你想切换到默认内容可以使用driver.switch_to.default_content()然后可以单击默认内容上的其他元素。
    猜你喜欢
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    相关资源
    最近更新 更多