硒的Python
问题描述:
我在火狐GeckoDriver浏览器
硒的Python
当我从窗口切换接收到错误,element not found
[1]至框架[0],回到窗口[1],然后单击关闭框架按钮。
我想继续使用GeckoDriver
,因为我遇到了性能问题ChromeDriver
。对不起,这是一个内部网站,我不能分享HTML
。
- 我已经做了以下指出的问题。
- 测试用完全相同的代码和在铬驱动
- 在Firefox当我切换到窗口[1]单击按钮,然后单击
closeframe
按钮,而无需切换到[0]帧正常工作。 - 我可以切换到帧[0],切换回窗口[1]并执行
driver.close()
,它将关闭窗口[1]。 - 我可以从窗口[1]中读取
driver.page_source
,从帧[0]切换回来,看到元素仍然在page_source
中,并且没有改变。 - 我可以从帧[0]切换回窗口[0],然后点击按钮重新打开窗口[1],并且工作正常。然后,我可以点击打开和关闭框架按钮。
所以问题只是驻留在从帧交换[0]回窗口[1],然后试图点击窗口[1]在Firefox GeckoDriver的元件。
的Python:2.7
硒:3.0.1
GeckoDriver:v0.13.0
火狐:51.0.1
下面是代码:
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities)
driver.get('www.internalwebsite.com')
driver.find_element_by_id('opensnewwindow').click()
driver.switch_to_window(driver.window_handles[1])
driver.find_element_by_id('opennewframe').click()
driver.switch_to_frame(0)
//read contents
driver.switch_to_window(driver.window_handles[1])
driver.find_element_by_id('closeframe').click()
错误:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="closeframe"]
答
下面的代码似乎有伎俩。仍然不确定为什么。
driver.switch_to.default_content()
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities)
driver.get('www.internalwebsite.com')
driver.find_element_by_id('opensnewwindow').click()
driver.switch_to_window(driver.window_handles[1])
driver.find_element_by_id('opennewframe').click()
driver.switch_to_frame(0)
//read contents
driver.switch_to.default_content()
driver.switch_to_window(driver.window_handles[1])
driver.find_element_by_id('closeframe').click()
您正在使用索引进行切换,打开/关闭帧后确定索引是否正确?尝试通过帧名称和mainWindow进行切换。 – Moshisho