gpt4 book ai didi

java - 使用 Selenium 在测试自动化期间检查元素时,某些网页中的元素 "id"会发生变化(非静态)。遇到这种情况该如何处理呢?

转载 作者:行者123 更新时间:2023-12-02 06:10:02 25 4
gpt4 key购买 nike

我正在尝试使用带有 Chrome 驱动程序的 SELENIUM 中的测试自动化来捕获下拉菜单字段。

为什么在使用 Chrome 浏览器检查元素时,某些网页中的元素“id”会发生变化?如何保持“id”静态而不改变?

我遵循的步骤:

  1. 当我检查网页中的元素时,特定的下拉菜单将其“id”显示为:id="combo-1782-inputEl"

HTML:

<input id="combo-1782-inputEl**" type="text" class="x-form-field x-form-required-field x-form-text x-trigger-noedit x-form-focus x-field-form-focus x-field-default-form-focus" autocomplete="off" name="type" readonly="readonly" aria-invalid="false" data-errorqtip="" style="width: 135px;">

id 通过在普通 Chrome 浏览器中检查网页观察到:

-

  • 然后我在我的java代码(自动化脚本)中使用了上面的id,如下所示:

    driver.findElement(By.id("combo-1782-inputEl")).click();

  • 当我运行测试时 > google chrome 浏览器会自动打开 > 测试成功,直到满足上述代码行。

  • 但是,当遇到上面的代码行时,测试失败并抛出以下异常:

    • 类 org.openqa.selenium.NoSuchElementException *
  • 然后我检查了由自动化测试软件打开(控制)的 Chrome 网页中的同一个下拉菜单项,发现“id”与步骤 1 中提到的先前 id 不同。本例中的“id”为:“combo-1781-inputEl

  • id 通过在自动化软件控制的 Chrome 浏览器中检查网页来观察:

    -

    可以看到,id中间的数字已经从1减少了。(1782-1 = 1781)

    在同一网页上的其他下拉菜单项中也发现了同样的问题。

    造成这个问题的原因是什么?我怎样才能克服这种情况?请帮忙。 :)

    附注当我在代码中使用“combo-1781-inputEl”(步骤 5 中的“id”)时,测试成功通过。

    driver.findElement(By.id("combo-1782-inputEl")).click();  //Test: failed
    driver.findElement(By.id("combo-1781-inputEl")).click(); //Test: passed

    当我使用在步骤 1 中通过检查不受自动化软件控制的普通 Chrome 浏览器中的网页获得的“id”时,我希望测试能够通过。

    最佳答案

    为了向您提供最佳答案,我需要查看网页的一段 HTML 代码,足以让我看到其他属性。当您拥有动态 ID 时,您有两个选择:

    选项 1:使用使用部分常量 ID 的 xpath,即:

    //*[starts-with(@id, 'combo-')]

    可能会成功,但前提是没有其他类似的 ID。

    或者也许:

    //*[starts-with(@id, 'combo-') 和ends-with(@id, '-inputEl')]

    但这可能仍然不够具体。这就是为什么查看 HTML 的一部分会有所帮助。

    选项 2:使用其他属性代替 ID,即类、文本或其他一些属性。

    //*[@name='FirstName']

    例如。您可以使用属性组合来制作相当复杂的 xpath,如果做得正确,它将相当稳定。提高您的 xpath 创建技能对于此类事情会派上用场。

    关于java - 使用 Selenium 在测试自动化期间检查元素时,某些网页中的元素 "id"会发生变化(非静态)。遇到这种情况该如何处理呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55916219/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com