不时出现“找不到元素”问题
Posted
技术标签:
【中文标题】不时出现“找不到元素”问题【英文标题】:"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 example 和 tour 并相应地编辑您的帖子以接收和适当的答案 谢谢你的建议,我已经编辑好了。 您的代码中有很多睡眠。看起来应用程序很慢,有时测试有点太快了。我建议您将 sleep 关键字替换为Wait Until Page Contains Element
或类似的。
【参考方案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
【讨论】:
以上是关于不时出现“找不到元素”问题的主要内容,如果未能解决你的问题,请参考以下文章
[Vue 警告]:找不到元素:#app - Vue.js 2
让 Selenium 单击 Instagram 关注者按钮会引发错误“找不到元素”
为啥 jQuery 或 getElementById 等 DOM 方法找不到元素?