gpt4 book ai didi

java - 如何用java处理Selenium弹出窗口

转载 作者:行者123 更新时间:2023-12-01 23:13:20 25 4
gpt4 key购买 nike

我尝试了几种选项来使用 Selenium 处理弹出窗口并填充字段值。但它不适用于以下代码。

Selenium java 代码:

driver.findElement(By.xpath("//*[@id=\"loginBox\"]/div[2]/div/div/div[1]/div")).click();
Thread.sleep(2000);

Alert alert = driver.switchTo().alert();
Thread.sleep(3000);

driver.findElement(By.name("Email")).sendKeys("xxx@yyy.com");
Thread.sleep(2000);

alert.accept();

HTML:

<div class="content">
<form class="ui form">
<div class="field">
<label for="Email">Email</label>
<div view="horizontal" class="ui right corner labeled input">
<div class="ui label label right corner">
<i aria-hidden="true" class="asterisk icon">
</i>
</div><input name="Email" id="Email" placeholder="Please enter email address" type="email" value="">
</div>
</div>
  • 如何处理弹出窗口并填写字段?
  • 另外,到底如何关闭警告窗口?

最佳答案

弹出窗口是 HTML 元素,而不是使用 driver.switchTo().alert() 的模式对话框。
要输入电子邮件,您必须等待该元素,并且 sleep 是一个糟糕的选择。下面的代码使用WebDriverWait等待电子邮件的可见性,这是最佳实践。
另外,使用 //*[@id=\"loginBox\"]/div[2]/div/div/div[1]/div 之类的选择器也不是一个好习惯。您可以找到一些有关选择器最佳实践的有用信息 here .

import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

// ...

WebDriverWait wait = new WebDriverWait(driver, 10);

driver.findElement(By.xpath("//*[@id=\"loginBox\"]/div[2]/div/div/div[1]/div")).click();

WebElement email = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("Email")));
email.sendKeys("xxx@yyy.com");
email.submit();

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

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