硒的Python

问题描述:

我在火狐GeckoDriver浏览器
硒的Python

当我从窗口切换接收到错误,element not found [1]至框架[0],回到窗口[1],然后单击关闭框架按钮。

我想继续使用GeckoDriver,因为我遇到了性能问题ChromeDriver。对不起,这是一个内部网站,我不能分享HTML

  1. 我已经做了以下指出的问题。
    • 测试用完全相同的代码和在铬驱动
    • 在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"]

+0

您正在使用索引进行切换,打开/关闭帧后确定索引是否正确?尝试通过帧名称和mainWindow进行切换。 – Moshisho

下面的代码似乎有伎俩。仍然不确定为什么。

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()