gpt4 book ai didi

java - 如何使用 Java 通过 Selenium WebDriver 处理 fancybox 弹出窗口

转载 作者:太空宇宙 更新时间:2023-11-04 09:41:35 25 4
gpt4 key购买 nike

我正在尝试使用以下代码处理身份验证弹出窗口:

driver.get("https://www.printvenue.com");
System.out.println("Successfully opened the Printvenue");
driver.manage().window().maximize();
driver.findElement(By.id("login_li")).click();
Thread.sleep(2000);
Set <String> handles =driver.getWindowHandles();
Iterator<String> it = handles.iterator();
String parent = it.next();
String child = it.next();
driver.switchTo().window(child);
driver.findElement(By.id("email")).sendKeys("abcd@gmail.com");

但我无法在电子邮件测试框中输入电子邮件。请帮忙。

最佳答案

这不是弹出窗口,而是 Lightbox .

幸运的是,这使得处理起来非常容易,它只是标准 DOM 中的标准 HTML。解决您问题的方法是:

    WebDriverWait wait = new WebDriverWait(driver, 15, 100);
driver.get("https://www.printvenue.com");

System.out.println("Successfully opened the Printvenue");

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("login_li"))).click();
WebElement emailElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("email")));
emailElement.sendKeys("abcd@gmail.com");

好吧,无论如何这应该是您问题的解决方案。您在这里看到的真正问题是,页面上有 4 个元素(在撰写本文时)共享一个应该是唯一的 ID。这是您的开发人员需要解决的问题,因为此 HTML 不符合 W3C!我会将其作为错误提出并让他们修复。

您可以使用如下代码解决该问题:

    List<WebElement> emailElements = driver.findElements(By.id("email"));
System.out.println(String.format("Oh dear, there are %s instances of the id email when there should only be 1...", emailElements.size()));
emailElements.get(3).sendKeys("abcd@gmail.com");

但是我建议您不要这样做,这确实需要修复!

关于java - 如何使用 Java 通过 Selenium WebDriver 处理 fancybox 弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55920708/

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