Java 代码中的Selenium Fluent Wait实现仍然给出;org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素:";

Java 代码中的Selenium Fluent Wait实现仍然给出;org.openqa.selenium.NoSuchElementException:没有这样的元素:无法定位元素:";,java,selenium,xpath,css-selectors,nosuchelementexception,Java,Selenium,Xpath,Css Selectors,Nosuchelementexception,代码中提到的URL显示登录屏幕需要5秒钟,为了在登录页面上输入详细信息,我在代码中实现了fluent wait 10秒钟。尽管正确地提到了等待,但由于某些原因,此等待没有得到遵守,并且我始终显示为org.openqa.selenium.NoSuchElementException:无此类元素:无法找到元素: 代码: 要在电子邮件地址字段中发送字符序列,您必须为元素tobelickable()归纳,并且您可以使用以下任一选项: 使用cssSelector: 使用xpath: 浏览器快照:

代码中提到的URL显示登录屏幕需要5秒钟,为了在登录页面上输入详细信息,我在代码中实现了fluent wait 10秒钟。尽管正确地提到了等待,但由于某些原因,此等待没有得到遵守,并且我始终显示为org.openqa.selenium.NoSuchElementException:无此类元素:无法找到元素:

代码:

要在电子邮件地址字段中发送字符序列,您必须为
元素tobelickable()
归纳,并且您可以使用以下任一选项:

  • 使用cssSelector:

  • 使用xpath:

浏览器快照:


参考文献 您可以在中找到关于的两个详细讨论:

要在电子邮件地址字段中发送字符序列,您必须为
元素tobelickable()
导出字符序列,并且您可以使用以下任一选项:

  • 使用cssSelector:

  • 使用xpath:

浏览器快照:


参考文献 您可以在中找到关于的两个详细讨论:


如果需要10秒才能完成,则等待工作正常。我只会用一个网络驱动程序,但是。。。这也是一个流畅的等待,但已经设置了您需要的。。。忽略、轮询等。你知道为什么上面的代码在正确提及所有内容的情况下仍然没有抛出此类元素异常吗?它将忽略10秒,是在10秒之前还是之后发生?10秒之后不会抛出此类元素异常。理想情况下,我的代码应该抑制此消息,但仍然没有看到这样的元素异常,因此。。。我无法在登录页面上输入电子邮件地址。Webdriverwait可以很好地处理这个场景,但我想了解使用fluent wait的代码有什么问题。假设使用相同的XPATH,不确定发生了什么。。。webdriverwait确实将轮询设置为1/2秒,因此可能在8.5-9.5秒时出现该选项??我还将尝试/捕获wait.until调用,以查看这是否引发超时。如果需要10秒才能获得超时,则等待工作正常。我只会用一个网络驱动程序,但是。。。这也是一个流畅的等待,但已经设置了您需要的。。。忽略、轮询等。你知道为什么上面的代码在正确提及所有内容的情况下仍然没有抛出此类元素异常吗?它将忽略10秒,是在10秒之前还是之后发生?10秒之后不会抛出此类元素异常。理想情况下,我的代码应该抑制此消息,但仍然没有看到这样的元素异常,因此。。。我无法在登录页面上输入电子邮件地址。Webdriverwait可以很好地处理这个场景,但我想了解使用fluent wait的代码有什么问题。假设使用相同的XPATH,不确定发生了什么。。。webdriverwait确实将轮询设置为1/2秒,因此可能在8.5-9.5秒时出现该选项??我还将尝试/捕获wait.until调用,以查看这是否引发超时。
public class FluentWaitDemo {

    public static void main(String[] args) throws InterruptedException 
    {

        WebDriverManager.chromedriver().setup();
        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("https://app.hubspot.com/login");
        By email = By.xpath("//input[@type='email']");
        WebElement userId = FluentWaitForElement(driver, email);
        userId.sendKeys("*******@gmail.com");
        driver.close();
    }

    public static WebElement FluentWaitForElement(WebDriver driver, By locator)
    {
        Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                              .withTimeout(Duration.ofSeconds(10))
                              .pollingEvery(Duration.ofSeconds(2))
                              .ignoring(NoSuchElementException.class);

        return wait.until(ExpectedConditions.presenceOfElementLocated(locator));
    }
}
Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@type='email']"}
  (Session info: chrome=83.0.4103.97)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
driver.get("https://app.hubspot.com/login");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#username"))).sendKeys("Bimlesh@gmail.com");
driver.get("https://app.hubspot.com/login");
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='username']"))).sendKeys("Bimlesh@gmail.com");