【问题标题】:"Element not found" issue occurred from time to time不时出现“找不到元素”问题
【发布时间】:2022-01-01 14:12:42
【问题描述】:

我写了一个代码,它有 4 个区域,我的代码有点长。当我一次尝试编译所有 4 个区域时,有时代码可以正常工作,但有时不能正常工作,并显示在错误下方;

找不到定位器为“xpath=//input[@id='submit3']”的元素。

这是与我的问题相关的代码部分,

    click element  xpath://html/body/app-root/div[1]/app-sidebar/div/ul/li[5]/a/p
    sleep  10s
   
    input text   ${LOCATOR_Card_Number}     ${Card_Number}
    Sleep  1s
    input text   ${LOCATOR_code}    ${code}
    
    IF    ${Card_Number} != 111111
            sleep  2s
            Click Button     xpath=//input[@id='submit3']
            click element  xpath://html/body/div/div[2]/table[3]/tbody/tr[2]/td/center/table/tbody/tr/td[1]/form/small/input

            Sleep  2s
            alert should be present

            #Click ok button
            click element   xpath=//form/input
            Sleep    25s
            
         ELSE IF    ${code} != 10
            sleep  2s
            Click Button     xpath=//input[@id='submit3']

            Alert Should Be Present       The value entered is incorrect: 'code'   DISMISS    1s
            sleep  20s
            click element  xpath://html/body/div/div[2]/table[2]/tbody/tr[2]/td/center/table/tbody/tr/td[2]/form/small/input

            Sleep  2s
            alert should be present

如果我只编译一个区域(通过评论其他三个区域)它工作正常。否则,大多数情况下,它会显示我前面提到的错误。我想一次编译整个代码。

而且有时,以前工作的 XPath 现在不能工作了。所以,我必须多次找到那些 Xpath。

我搜索了这件事以找到解决方案,但我做不到。 所以,我想知道上述问题的原因,并需要您的建议和解决方案来解决这些问题。

【问题讨论】:

  • 您好,请阅读 minimal reproducible exampletour 并相应地编辑您的帖子以接收和适当的答案
  • 谢谢你的建议,我已经编辑好了。
  • 您的代码中有很多睡眠。看起来应用程序很慢,有时测试有点太快了。我建议您将 sleep 关键字替换为 Wait Until Page Contains Element 或类似的。

标签: pycharm robotframework


【解决方案1】:

首先你应该使用相对的 xpaths 和 selenium 库关键字你可以实现动态等待。 试试下面的代码,确保所有 xpath 都是正确的,并在开发工具中突出显示。 您还可以删除所有硬编码的等待。

    ${sometimeout}=    set Variable   30
    click element  xpath://app-sidebar/div/ul/li[5]/a/p
    Wait Until Element Is Visible  ${LOCATOR_Card_Number}  ${sometimeout}
   
    input text   ${LOCATOR_Card_Number}     ${Card_Number}
    Sleep  1s
    input text   ${LOCATOR_code}    ${code}
    
    IF    ${Card_Number} != 111111
            sleep  2s
            Click Button     xpath=//input[@id='submit3']
            Wait Until Page Contains Element    ///table[3]/tbody/tr[2]/td/center/table/tbody/tr/td[1]/form/small/input
            click element  xpath:///table[3]/tbody/tr[2]/td/center/table/tbody/tr/td[1]/form/small/input

            Sleep  2s
            alert should be present

            #Click ok button
            click element   xpath=//form/input
            Sleep    25s
            
         ELSE IF    ${code} != 10
            sleep  2s
            Click Button     xpath=//input[@id='submit3']

            Alert Should Be Present       The value entered is incorrect: 'code'   DISMISS    1s
            Wait Until Page Contains Element    //table[2]/tbody/tr[2]/td/center/table/tbody/tr/td[2]/form/small/input    ${sometimeout}
            click element  xpath://table[2]/tbody/tr[2]/td/center/table/tbody/tr/td[2]/form/small/input

            Sleep  2s
            alert should be present

为了进一步调查,您可以通过下面提到的链接 https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html#Wait%20Until%20Page%20Contains%20Element

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多