未处理的错误"无法使用Robot框架查找具有指定ID的上下文"

nel*_*Zka 4 selenium automated-tests robotframework selenium-webdriver selenium2library

使用Robot框架和Selenium2Library处理iframe时遇到问题.它抛出错误:

WebDriverException: Message: unknown error: unhandled inspector error: {"code":-
32000,"message":"Cannot find context with specified id"}
(Session info: chrome=55.0.2883.87)
  (Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)
Run Code Online (Sandbox Code Playgroud)

我的测试代码是:

Fill In Description ${description}
    Wait Until Element Is Visible    ${FRAME}    40
    Select Frame    ${FRAME}
    wait until page contains element  ${IFRAME BODY}
    Click Element    ${IFRAME BODY}
    wait until page contains element  ${IFRAME BODY}
    Clear Element Text    ${IFRAME BODY}
    wait until page contains element  ${IFRAME BODY}
    Input Text    ${IFRAME BODY}     ${description}
    Unselect Frame
Run Code Online (Sandbox Code Playgroud)

它失败了 Input Text ${IFRAME BODY} ${description}

顺便说一句,我重复使用这个关键字来发现这个iframe的更多页面,但它只在一次确切的情况下失败 - 但所有iframe的html代码都是相同的,所以真的不明白为什么它有时会工作...

很高兴得到任何帮助.

小智 9

这个问题似乎再次出现在chromedriver中,最新的一个是:https://bugs.chromium.org/p/chromedriver/issues/detail?id = 2198

根据这张票可以通过两种方式修复:

  • 切换到没有此问题的chromedriver版本
  • 切换到帧后添加等待


nel*_*Zka 1

所以我必须更改这样的代码才能在其他框架中工作:

Log comment ${comment}
   wait until element is visible    ${RICH TEXT AREA}    40
   sleep   1
   click element    ${RICH TEXT AREA}
   Wait Until Element Is Visible    ${FRAME}    40
   Select Frame    ${FRAME}
   wait until element is visible    ${IFRAME BODY}   20
   input text   ${IFRAME BODY}   ${comment}
   Unselect Frame
Run Code Online (Sandbox Code Playgroud)

${IFRAME BODY}仍然//body在 Iframe 中,令人惊讶的是它现在一直在输入文本...不幸的是,如果没有睡眠它就无法工作:(但是有了睡眠它就可以工作..