python 为什么下面的循环没有按预期迭代

bmp9r5qi  于 2023-03-28  发布在  Python
关注(0)|答案(1)|浏览(89)

我试图用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中正确地分配了元素

4nkexdtk

4nkexdtk1#

如果点击一个链接将您带到一个新页面,那么您将得到此错误,因为下一个链接引用的元素不是当前(新)页面的一部分。

相关问题