Intellij Idea Selenium:Wait和visibilityOf元素不工作

von4xj4u  于 2023-04-29  发布在  其他
关注(0)|答案(1)|浏览(104)

我有一段非常简单的代码:

Browser.Wait(15).until(ExpectedConditions.visibilityOf(driver.findElement(By.id("given_name")))).sendKeys(selectAll + fornavnOgEtternavn.getFornavn());

测试此标记:

<<form id="egendefinert" action="...method="post">
<h2>Egendefinert bruker</h2>
    <input type="hidden" name="custom" value="true">
        <div class="inputfelt avansertModus" style="display: none;">
            <div class="label-wrapper">
                <label for="preferred_username">
                    <span>Brukernavn</span>
                    <span class="label-description">(preferred_username)</span>
                </label>
             </div>
             <input name="preferred_username" id="preferred_username">
            </div>
            <div class="inputfelt ">
                <div class="label-wrapper">
                    <label for="given_name">
                        <span>Fornavn</span>
                        <span class="label-description">(given_name)</span>
                     </label>
                 </div>
                 <input name="given_name" id="given_name">
                </div>
...

这应该等待15秒,让输入字段可见,然后使用sendKeys()输入文本。
然而,当我运行测试时,它立即失败,并出现以下错误:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#given_name"}

它甚至不会等待一秒钟--只是以元素不存在立即结束。
但是,如果我在代码中放置断点,并单步执行访问this和以下输入字段的每一行,则可以正常工作。
那么,为什么Selenium急于声称元素不存在,而不是等待指定的可见性?

tct7dpnv

tct7dpnv1#

driver.findElement代码中抛出异常,您正在执行driver.findElement(By.id("given_name"),它将首先抛出异常,并且您的WebDriver等待根本没有计算

Browser.Wait(15).until(ExpectedConditions.visibilityOf(**driver.findElement(By.id("given_name")**))).sendKeys(selectAll + fornavnOgEtternavn.getFornavn());

在传递By locator Object的地方使用

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("given_name")))
            .sendKeys(selectAll + fornavnOgEtternavn.getFornavn());

相关问题