我有一段非常简单的代码:
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急于声称元素不存在,而不是等待指定的可见性?
1条答案
按热度按时间tct7dpnv1#
在
driver.findElement
代码中抛出异常,您正在执行driver.findElement(By.id("given_name")
,它将首先抛出异常,并且您的WebDriver等待根本没有计算在传递By locator Object的地方使用