我试图用pytest和selenium写一个测试函数来测试导航栏链接,循环将迭代两次,然后我得到以下错误
“FAILED tests/test_system.py::test_menu - selenium.common.exceptions.StaleElementReferenceException:消息:过时的元素引用:元素未附加到页面文档”
守则如下:
Pytest:
def test_menu(driver):
driver.get("http://localhost:3000/enter_invoice")
title_name = ["Orders","Enter Invoice","Stock"]
i=0
navbar = driver.find_element(By.CLASS_NAME,'navbar-nav')
links = navbar.find_elements(By.TAG_NAME,"a")
for link in links:
print("Test",link)
link.click()
#title=driver.title
#assert title == title_name[i]
time.sleep(3)
i=i+1
time.sleep(3)
菜单HTML:
<nav class="navbar navbar-expand-lg bg-dark" data-bs-theme="dark">
<div class="container-fluid">
<a class="navbar-brand" href="https://dkit.ie" id="dkit_menu">DKiT</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/get_orders" id="get_orders_menu">Orders</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/enter_invoice" id="enter_invoice_menu">Add Invoice</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/item_list" id="stock_list_menu">Show Stock</a>
</li>
</ul>
</div>
</div>
</nav>
我尝试检查以确保我在pytest中的navvar中正确地分配了元素
1条答案
按热度按时间4nkexdtk1#
如果点击一个链接将您带到一个新页面,那么您将得到此错误,因为下一个链接引用的元素不是当前(新)页面的一部分。