Robot Framework SeleniumFor循环点击导航链接失败,并出现StaleElementReferen



我有这个测试,它应该获取导航菜单中的所有链接,并单击它们以确保它们工作。。。然而,测试失败了,因为页面重新加载,我得到了这个错误消息

StaleElementReferenceException:消息:的元素引用已过时;元素不再附加到DOM,它不在当前框架上下文中,或者文档已刷新

我相信这个错误是因为当按下链接时,页面正在重新加载,并且正在刷新dom,这导致它失败,因为在log.html中,循环的第一次迭代成功了,但其他迭代没有成功。

我想在不硬编码链接的情况下实现这一点,因为我想在几个页面上重用这个测试。

任何帮助都将不胜感激,无论如何,谢谢!

这是代码。。。

*** Settings ***
Library     SeleniumLibrary
Test Setup    Open Browser    ${URL}    ${BROWSER}
Test Teardown    Close Browser
*** Variables ***
${BROWSER}      Firefox
${URL}          https://coupa.com/blog
*** Test Cases ***
# Validate Homepage Title
#     Title Should Be     Home | Coupa Cloud Platform for Business Spend | Travel and Expense Management, Procurement, and Invoicing
Validate MenuLinks
Validate MenuLinks
*** Keywords ***
Validate MenuLinks
${links} =  Get WebElements  //*[@id="block-system-menu-block-blog-term-menu"]/div/div/ul/li/a
FOR  ${link}  IN  @{links}
Maximize Browser Window  
Wait Until Page Contains Element  ${link}
Click Link  ${link}
Go To  ${URL}
END

我为任何好奇如何进行的人解决了这个问题

问题出在for循环中

这是修复的代码

${links} =  SeleniumLibrary.Get Element Count  ${ul_location}/li/a
FOR  ${index}  IN RANGE  ${links}
${new_link} =  Get WebElement  ${ul_location}/li[${index} + 1]/a
Wait Until Page Contains Element  ${new_link}
Mouse Over  ${new_link}
Click Link  ${new_link}
${title} =  Get Title
Should Not Be Equal  ${title}  Page not found | Coupa Cloud Platform for Business Spend | Travel and Expense Management, Procurement, and Invoicing   msg='Navlinks should not go to 404 URL'
END

我认为它失败了,因为它试图访问@{links}列表中的项目,但它们被分配了唯一的标识符,只有在浏览器窗口打开时才存在,因此当浏览器刷新时,它会覆盖ID并中断测试。。。

相关内容

  • 没有找到相关文章

最新更新