Chrome的Selenium alert.sendKeys无法正常工作

时间:2018-12-01 02:57:06

标签: selenium selenium-webdriver webdriver alert webdriverwait

这是我的代码段:

Alert promptAlert  = driver.switchTo().alert();
Thread.sleep(4000);
promptAlert.sendKeys("Accepting the alert");

它在Firefox中工作得很好,但在Chrome中不起作用。我正在使用0.23.0版的Gecko驱动程序,2.43.0版的Chrome驱动程序。

任何帮助将不胜感激。

5 个答案:

答案 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()