首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用java处理Selenium Pop-up

如何使用java处理Selenium Pop-up
EN

Stack Overflow用户
提问于 2019-10-13 14:12:39
回答 1查看 63关注 0票数 0

我尝试了几个选项来使用Selenium处理弹出并填充字段值。但是它不适用于下面的代码。

Selenium java代码:

代码语言:javascript
复制
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 :

代码语言:javascript
复制
<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>
  • 我怎样才能处理这个问题并填补这个问题呢?
  • 最后,如何关闭警报窗口?
EN

回答 1

Stack Overflow用户

发布于 2019-10-13 16:27:29

弹出的是HTML元素,而不是使用driver.switchTo().alert()的模态对话框.

要输入电子邮件,您必须等待元素,以及sleep错误的选择。下面的代码正在等待email的可见性,使用WebDriverWait,这是最佳实践。

此外,使用像选择器这样的//*[@id=\"loginBox\"]/div[2]/div/div/div[1]/div也不是一个好的实践。您可以找到一些关于选择器这里最佳实践的有用信息。

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58364363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档