【问题标题】:Selenium Webdriver [Java] [gecko] : How do I pass a string to a input field in an AlertSelenium Webdriver [Java] [gecko]:如何将字符串传递给警报中的输入字段
【发布时间】:2017-06-23 04:02:53
【问题描述】:

我有一个在线 Web 应用程序,其中列出了具有查看按钮的产品。单击“查看”按钮会显示警报。警报有四 (4) 个字段:警报文本、输入文本字段、确定按钮和取消按钮。警报文本显示为“警报文本是:产品缺货!请输入您的电子邮件 ID”。

如果我用我的 Selenium Java 代码取消警报,它运行良好:

//Switch to the Alert & Dismiss
driver.switchTo().alert().dismiss();

如果我简单地使用我的 Selenium Java 代码单击“确定”,它确实运行良好:

//Click on Accept
driver.switchTo().alert().accept();

但如果我尝试在警报的输入文本字段中提供我的电子邮件 ID,

Thread.sleep(3000);
driver.switchTo().alert().sendKeys("debanjan.selenium@mymail.com");
//driver.switchTo().alert().sendKeys("debanjan");

//Click on Accept
driver.switchTo().alert().accept();

Selenium 显示 org.openqa.selenium.WebDriverException 如下:

警报文本是:产品缺货!请输入您的邮箱 Id org.openqa.selenium.WebDriverException:缺少“值”参数 (警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:6 毫秒

操作系统详细信息:“Windows 8”专业版,os.arch:“amd64”,os.version:“6.2”,

Java.version: '1.8.0_77'

驱动信息:org.openqa.selenium.firefox.FirefoxDriver

谁能帮帮我?

奇怪的是: 当我尝试通过独立的 Selenium Java 类来处理警报(即在警报文本框中传递 emailID)时,这段代码可以正常工作。

driver.switchTo().alert().sendKeys("debanjan.selenium@gmail.com");

但是,当通过 FRAMEWORK(我实现的)[Class : PlaceOrder, Method : orderCamera()] 实现相同的代码时,emailID 永远不会写入警报的 Textbox 字段中。

【问题讨论】:

  • 如果 driver.switchTo().alert().sendKeys("debanjan") 不起作用,请尝试使用 Robot 在警报框中传递值。

标签: java selenium selenium-webdriver gecko geckodriver


【解决方案1】:

【讨论】:

  • 是的,我试过这个:> 但它对我不起作用。
  • @Dev 这个解决方案对我有用。您能帮忙检查一下这是真正的警报还是带有警报外观的模态。
  • 奇怪的是:当我尝试通过独立的 Selenium Java 类来处理警报(即在警报文本框中传递 emailID)时,这段代码可以正常工作。 driver.switchTo().alert().sendKeys("debanjan.selenium@gmail.com");但是,当通过 FRAMEWORK [Class : PlaceOrder, Method : orderCamera()] 实现相同的代码时,emailID 永远不会写入 Alert 的 Textbox 字段。
【解决方案2】:

您需要将电子邮件发送到特定的文本字段

Alert alert = driver.switchTo().alert();
WebElement inputTextField = driver.findElement(...);
inputTextField.sendKeys("debanjan.selenium@mymail.com");
alert.accept();

然后切换回来

driver.switchTo().defaultContent();

【讨论】:

  • 我想尝试这种方法,但无论是使用 Firebug/Firepath 还是使用 xPathCheeker,我都无法找出元素的 xpath(即文本框)。还有其他建议吗?
  • @Dev 可以分享一下网站吗?
  • @Guy,你确定这段代码可能有用吗?由alert()prompt()confirm() 触发的弹出窗口不属于DOM,因此无法从弹出窗口中选择“元素”。
  • @Andersson OP 没有提到警报是如何创建的,所以我认为他/她可能会检查这个选项。
猜你喜欢
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-20
  • 1970-01-01
相关资源
最近更新 更多