(Appium-Python)“使用给定的搜索参数无法在页面上找到元素”和“DOM 中不再存在元素”的区别

Posted

技术标签:

【中文标题】(Appium-Python)“使用给定的搜索参数无法在页面上找到元素”和“DOM 中不再存在元素”的区别【英文标题】:(Appium-Python) Difference of "Element could not be located on the page using the given search parameters" & "Element does not exist in DOM anymore" 【发布时间】:2021-09-29 16:24:05 【问题描述】:

如上。遇到了这两个问题。

使用给定的搜索参数无法在页面上找到一个元素。

该元素不再存在于 DOM 中

【问题讨论】:

【参考方案1】:

第一个错误

使用给定的搜索参数无法在页面上找到元素

表示 Selenium 在页面上找不到与给定定位器匹配的元素。 而第二个错误

该元素不再存在于 DOM 中

表示元素在页面上,但不再存在。 这实际上是 Selenium Stale Element 错误。 陈旧的意思是陈旧的、腐烂的、不再新鲜的。陈旧元素是指旧元素或不再可用的元素。假设在 WebDriver 中作为 WebElement 引用的网页上有一个元素。如果 DOM 发生变化,那么 WebElement 就会过时。如果我们尝试与过期的元素进行交互,则会抛出 StaleElementReferenceException。

【讨论】:

因此,如果该元素在 DOM 中不存在,则意味着它无法找到它,但在某些时候它确实找到了。现在与我自己的问题一致,当页面上仍然存在该元素时,您有什么建议可以解决这个问题吗? 这意味着该元素在页面上但不再存在或已更改。这意味着 Selenium / Appium 得到了那个元素,但是现在这个指针(Selenium Web 元素对象)指向任何东西。 要说明您应该如何解决问题,我需要查看您的测试流程正在运行。如果您说元素仍然存在,我可以猜测元素看起来仍然存在,但实际上元素已更改,所以现在它是一个新的,其他元素,因此前一个指针(Selenium Web 元素对象)没有指向在这个新元素上。 这是一个重要的主题。您应该了解更多有关 Selenium 中的陈旧元素的信息。

以上是关于(Appium-Python)“使用给定的搜索参数无法在页面上找到元素”和“DOM 中不再存在元素”的区别的主要内容,如果未能解决你的问题,请参考以下文章

使用给定的搜索参数 Wpf UI 测试无法在页面上找到元素

移动端自动化自动化(Android&iOS)——Appium