这是我的代码段:
Alert promptAlert = driver.switchTo().alert();
Thread.sleep(4000);
promptAlert.sendKeys("Accepting the alert");
它在Firefox中工作得很好,但在Chrome中不起作用。我正在使用0.23.0版的Gecko驱动程序,2.43.0版的Chrome驱动程序。
任何帮助将不胜感激。
答案 0 :(得分:2)
在遇到同样的问题之后,我得出结论,这纯粹是显示问题。接受警报后,将发送sendKeys(...)的输入。
另请参阅本Chromium问题的答案:https://bugs.chromium.org/p/chromedriver/issues/detail?id=1120#c11
答案 1 :(得分:0)
我认为这是因为警报会阻止事件循环。 您应该能够禁用警报:
driver.executeScript("window.alert = () => 0")
答案 2 :(得分:0)
您需要为 alertIsPresent 引入 WebDriverWait ,如下所示:
Alert promptAlert = new WebDriverWait(driver, 10).until(ExpectedConditions.alertIsPresent());
promptAlert.sendKeys("Accepting the alert");
答案 3 :(得分:0)
尝试使用此代码
Alert alert = driver.switchTo().alert();
System.out.println(alert.getText());
alert.sendKeys("testing");
alert.accept();
Thread.sleep(2000);
System.out.println(alert.getText());
如果仍然无法正常运行,请降级chrome驱动程序版本。我希望可以。
答案 4 :(得分:0)
The input value is successful, but the input value is not displayed(By https://translate.google.cn/)
function disp_prompt()
{
var name=prompt("prompt","~~~")
if (name!=null && name!="")
{
document.write("~~~")
}
else
{
alert("IS NULL") ;
}
}
<input id="prompt" type="button" style="width: 200px;height:60px;" onclick="disp_prompt()" value="prompt" />
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(r"C:\Users\1.html")
driver.find_element_by_id("prompt").click()
a = driver.switch_to.alert
a.send_keys("")
a.accept()