1

element not found我在 Firefox GeckoDriver 浏览器中收到错误消息

当我从 window[1] 切换到 frame[0] 时,回到 window[1],然后单击关闭框架按钮。

我想继续使用GeckoDriver,因为我遇到了性能问题ChromeDriver。抱歉,这是一个内部网站,我无法分享HTML.

  1. 我已执行以下操作来查明问题。
    • 使用完全相同的代码进行测试,并在 Chrome 驱动程序中正常工作
    • 当我切换到窗口 [1] 单击openframe按钮,然后单击closeframe按钮,而不切换到框架 [0] 时,在 Firefox 中工作。
    • 我可以切换到 frame[0],切换回 window[1] 并执行 a driver.close(),它会关闭 window[1]。
    • 从 frame[0] 切换回来后,我可以读取driver.page_source来自 window[1] 的内容,并看到该元素仍在page_source并且没有更改。
    • 我可以从 frame[0] 切换回 window[0] 并单击按钮重新打开 window[1] 并且可以正常工作。然后我可以单击打开和关闭框架按钮。

所以问题只在于从 frame[0] 切换回 window[1],然后尝试在 Firefox GeckoDriver 中单击 window[1] 中的元素。

Python:2.7
Selenium:3.0.1
GeckoDriver:v0.13.0
Firefox: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:消息:无法定位元素:[id="closeframe"]

4

1 回答 1

0

下面的代码似乎可以解决问题。仍然不确定为什么。

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()
于 2017-02-07T23:32:26.693 回答