Javascript 使用Robot框架在页面上滚动到定位器

Javascript 使用Robot框架在页面上滚动到定位器,javascript,robotframework,Javascript,Robotframework,我一直在用java/java脚本编写的页面上使用robot框架。我试图滚动到一个定位器,使其在页面上可见,以便能够验证其文本值。我确实根据我的问题遵循了这个QA,并找到了一个解决方案,但它给我带来了一个例外 页面上要滚动到的我的定位器: ${CLAIMS} xpath=//*[@id="generalAndIncidents:relatedAlertsPanel:idPreviousClaimsList"] 执行滚动的My关键字(它有一个用于加载定位器变量的参数):

我一直在用java/java脚本编写的页面上使用robot框架。我试图滚动到一个定位器,使其在页面上可见,以便能够验证其文本值。我确实根据我的问题遵循了这个QA,并找到了一个解决方案,但它给我带来了一个例外

页面上要滚动到的我的定位器:

${CLAIMS}    xpath=//*[@id="generalAndIncidents:relatedAlertsPanel:idPreviousClaimsList"]
执行滚动的My关键字(它有一个用于加载定位器变量的参数):

运行时,我收到以下异常:

20:36:17.376    INFO    Executing JavaScript:
window.document.evaluate("xpath=//*[@id="generalAndIncidents:relatedAlertsPanel:idPreviousClaimsList"]", document.body, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.scrollIntoView(true);
Without any arguments.  
20:36:17.758    FAIL    JavascriptException: Message: javascript error: missing ) after argument list
  (Session info: MicrosoftEdge=86.0.622.69)
我还检查了此页面,查看此java脚本代码片段的“操作方法”:

你能告诉我从哪里开始调试吗?我做错了什么?这是不是因为我错过了逃跑的机会

多谢各位

更新#1:这可能与名称空间解析器有关吗

更新#2:

Scroll To Element
    [Arguments]    ${scroll_to_element}
    ${x} =    Get Horizontal Position    ${scroll_to_element}
    ${y} =    Get Vertical Position      ${scroll_to_element}
    Execute Javascript    window.scrollTo(${x}, ${y})

Scroll Loop Click
    [Arguments]    ${locator}
    FOR    ${index}    IN RANGE    1    10
        Sleep    0.5s
        ${isElementVisible} =    Run Keyword and Return Status    Click Element    ${locator}
        Run Keyword If    '${isElementVisible}'!='True'    Wait Until Keyword Succeeds    6s    2s    Scroll To Element    ${locator}
        Log    ${isElementVisible}
        Exit For Loop If    '${isElementVisible}'=='True'
    END
    Wait Until Element is Visible    ${locator}

你可以试试下面的代码,这是目前为我工作。早就从Stackoverflow得到了这个解决方案

Scroll To Element
    [Arguments]  ${locator}
    ${x}=        Get Horizontal Position  ${locator}
    ${y}=        Get Vertical Position    ${locator}
    Execute Javascript  window.scrollTo(${x}, ${y})

字符串使用双引号,并且还包含双引号。这可能至少是问题的一部分。你好,布莱恩,非常感谢。这可能是我的问题之一,因为当我省略双引号时,我收到以下错误:FAIL InvalidElementStateException:消息:无效元素状态:未能对“Document”执行“evaluate”:字符串“xpath://*[@id=generalAndIncidents:relatedAlertsPanel]/div[1]/span”不是有效的xpath表达式。嗨,Manish!非常感谢您的投入!它确实有用!虽然我的案例有点特殊,因为它仍然不会滚动到元素。原因是,它可能已经是可见的,即使它不是光学可见的。所以我做了一个循环来检查点击动作。但是你提供的代码太棒了!我已在第一篇文章中插入了我的函数。:)
Scroll To Element
    [Arguments]  ${locator}
    ${x}=        Get Horizontal Position  ${locator}
    ${y}=        Get Vertical Position    ${locator}
    Execute Javascript  window.scrollTo(${x}, ${y})