【问题标题】:save return-value of javascript in robotframework selenium2library gives 0在机器人框架 selenium2library 中保存 javascript 的返回值给出 0
【发布时间】:2021-04-10 02:50:14
【问题描述】:

我想做的是单击页面上的所有链接并关闭即将出现的选项卡。它们位于:

<ul>
   <li>
      <a href=#>random text</a>
   </li>
   <li>...

由于要点击的链接很多,我尝试了类似的方法:

Click All Links
    Set Global Variable    ${i}    1
    ${elementCount}=    Execute Javascript    return document.querySelectorAll('a').length
    FOR    ${i}   IN RANGE    ${elementCount}
        Execute Javascript    document.getElementsByTagName('a')[i].click();
        Run Keyword and Ignore Error    Delete Tab
        Exit For Loop If    ${i} == elementCount
    END
    Log    Exited


Delete Tab
    Sleep    ${Delay_short}
    ${title_var}    Get Window Titles
    Select Window    title=${title_var}[1]
    Close Window

但我无法超过第一个返回长度,因为 ${elementCount} 总是显示值为 0:

Executing JavaScript:
return document.querySelectorAll('a').length
Without any arguments.
20210104 10:20:26.687 :  INFO : ${elementCount} = 0

任何进一步的帮助也将不胜感激。

【问题讨论】:

  • 这一行没有问题:${elementCount}= Execute Javascript return document.querySelectorAll('a').length。链接不是 iframe 中的吗?
  • 不,那里没有 iframe。如果我查看 DOM,它的字面意思是 &lt;body&gt;&lt;ul&gt;&lt;li&gt;::marker&lt;a&gt;&lt;/a&gt;&lt;br&gt;&lt;em&gt;&lt;/em&gt;&lt;/li&gt; 带有大量的 li 元素。

标签: javascript selenium extjs robotframework return-value


【解决方案1】:

所以问题不在于代码,而在于查看的页面 - 它给出了 401,所以我首先要挑战其他内容。

由于下半部分也不好用,这里对我有用:

Click Àll Links
    Set Variable    ${i}    0
    ${elementCount}=    Execute Javascript    return document.querySelectorAll('a').length-1
    FOR    ${i}   IN RANGE    ${elementCount}
        Execute Javascript    i='${i}'
        Execute Javascript    document.getElementsByTagName('a')[${i}].click();
        Sleep    0.5s
        Wait Until Element Is Visible    css=a
        ${title_var}    Get Window Titles
        #Select Window    title=${title_var}[${i+1}]
        Log    ${title_var}[${i+1}]
        #SeleniumLibrary.Capture Page Screenshot
        Sleep    0.5s
        Select Window    title=${title_var}[0]
        Exit For Loop If    ${i} == ${elementCount}
    END
    Log    Exited
``

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 2015-12-24
    • 2016-04-28
    • 2015-09-28
    • 2021-06-10
    • 2016-08-17
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    相关资源
    最近更新 更多