Selenium找不到我的元素(按钮)

2024-09-29 18:43:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用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的影响后,找到它?你知道吗


Tags: tofromid网页bydriverseleniumsleep
2条回答

当您单击iframe并且需要返回到上一帧或默认帧时,您应该使用driver.switch_to.default_content(),然后您可以单击默认内容上的按钮。你知道吗

这会将上下文切换到默认帧,并且您可以再次对其进行操作。你知道吗

如果两个按钮都属于不同的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()

相关问题 更多 >

    热门问题