【发布时间】:2021-10-03 04:19:59
【问题描述】:
我有一个带有 2 个按钮的应用程序。按钮 A 将应用程序带到没有按钮的新页面,然后返回到有 2 个按钮的页面。我的自动化测试是点击按钮 A,等待应用程序进入新页面并返回,然后点击按钮 B。
代码:
el05a = WebDriverWait(driver, 120).until(
expected_conditions.presence_of_element_located((By.ID, "id_of_button_a"))
)
el05a.click()
el05b = WebDriverWait(driver, 120).until(
expected_conditions.presence_of_element_located((By.ID, "id_of_button_b"))
)
el05b.click()
但是,我收到关于按钮 B 不再位于 DOM 中的 StaleElementReferenceException。
显然,当应用程序位于新页面时,按钮 B 不会在 DOM 中,但为什么我的代码不知道要等到按钮 B 的存在?我认为 Presence_of_element_located 意味着代码将暂停,直到找到元素。
我知道这可以“技术上”用 time.sleep 模块修补,但我试图避免这种情况。
【问题讨论】:
-
你可以试试visibility_of_element_located而不是presence_of_element_located?
-
成功了。您能否将其发布为答案,以便我将此问题标记为已回答?
-
当然.. 我会发布一个答案 :) 很高兴它有帮助
标签: selenium appium webdriverwait python-appium