Java 在Selenium中导航唯一警报

Java 在Selenium中导航唯一警报,java,selenium,alert,Java,Selenium,Alert,我目前正在使用Selenium自动化一个网站,但遇到以下警报:我无法访问页面的HTML。我需要在第一个字段中输入一个数字,然后选择“展开”按钮 当我打开对话框时,我注意到焦点在文本框上,因此我尝试: Actions actions = new Actions(driver); Alert alert = driver.switchTo().alert(); actions.sendKeys(Integer.toString(2)); actions.sendKeys(Keys.TAB); act

我目前正在使用Selenium自动化一个网站,但遇到以下警报:我无法访问页面的HTML。我需要在第一个字段中输入一个数字,然后选择“展开”按钮

当我打开对话框时,我注意到焦点在文本框上,因此我尝试:

Actions actions = new Actions(driver);
Alert alert = driver.switchTo().alert();
actions.sendKeys(Integer.toString(2));
actions.sendKeys(Keys.TAB);
actions.sendKeys(Keys.ENTER);
然而,这并没有导致在字段中输入信息或选择“展开”,但也没有使应用程序崩溃

我还尝试:

Alert alert = driver.switchTo().alert();
alert.sendKeys(Integer.toString(2));
alert.accept();
这确实使应用程序崩溃,并返回错误: 模态对话框没有文本框-可能是警报

你有没有办法与警报互动


编辑:新窗口似乎允许我使用
driver.switchTo().alert()
driver.switchTo().window(“genericWindowHandle”)
。我不确定这是否正常,或者它是否有助于确定此警报/窗口实际上是什么。

这显然是一个窗口-请注意标题栏。除此之外,当它出现时,您可以通过查看快速启动选项栏(通常在Mac和Windows的屏幕底部)轻松验证它是否是一个窗口。将识别新窗口,但不会识别对话框


这看起来像一个窗口,您所拥有的是正常的和预期的。

我遇到了这个问题,页面标题是与您相同的网页对话框。在此窗口中,您无法检查该元件。 解决方法是转到

Internet Explorer--> 
Internet Options --> 
Security tab -->
Custom Level --> 
Disable the option : Allow Websites to open windows without address or status bar
现在,您可以在IE中通过F12检查元件。 现在,只需编写所有selenium命令,
如果对话框调用JavaScript,您也可以使用JavaScriptExecutor进行此操作。

对我来说就像一个新窗口,而这是一个很好的观察结果,这仍然不能回答实际的问题:如何在不使用By定位器的情况下与窗口交互。我不确定我是否遵循了此注释-您的意思是希望在不使用By定位器的情况下访问文本框和按钮,还是说切换到By定位器后无法使用它们访问元素?根据我的经验,一旦你切换到它们,你应该能够像往常一样访问它们(使用By定位器)。。我刚刚注意到您正在使用IE作为浏览器-Selenium中有很多东西不受支持,或者不能很好地与IE配合使用。您能告诉我这些代码是否适用于Firefox而不是IE吗?很遗憾,我正在使用的网页只有IE8支持,这是我遇到这么多麻烦的原因之一。