我想使用硒来按下按钮,昨天我遇到了一个问题,我无法这样做,只是发现我的按钮位于环绕整个网页的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
(该页面内部也有一个iframe)这样的td):
<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的效果?
答案 0 :(得分: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()
答案 1 :(得分:0)
单击iframe后,需要返回上一帧或默认帧,则应使用driver.switch_to.default_content()
,然后可以单击默认内容上的按钮。
这会将上下文切换到默认框架,您将能够再次对其进行操作。