Selenium alert.sendKeys с Chrome не работает

Вот фрагмент кода, который у меня есть:

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

Он отлично работает в Firefox, но не работает в Chrome. Я использую драйвер Gecko версии 0.23.0, драйвер Chrome версии 2.43.0.

Любая помощь будет оценена.

Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
1
0
4 630
5

Ответы 5

Я думаю, это потому, что предупреждение блокирует цикл событий. Вы должны уметь отключать предупреждения:

driver.executeScript("window.alert = () => 0")

Я пробовал описанное выше, но получаю исключение: org.openqa.selenium.UnhandledAlertException: неожиданное открытие предупреждения: {Текст предупреждения: введите свое имя:}

s7_user 01.12.2018 19:14

Попробуйте сначала переключиться на предупреждение, прежде чем выполнять приведенный выше код.

yudi2312 27.08.2019 17:03

Вам нужно вызвать WebDriverWait для alertIsPresent следующим образом:

Alert promptAlert  = new WebDriverWait(driver, 10).until(ExpectedConditions.alertIsPresent());
promptAlert.sendKeys("Accepting the alert");

Я пробовал описанное выше, но это не имело никакого значения. Те же результаты с или без.

s7_user 01.12.2018 19:13

@ s7_user Ваш комментарий мне тоже не помогает. Извините, ответ не помог вам решить вашу проблему, но как я собираюсь улучшить свой пост с помощью этого отзыва?

DebanjanB 01.12.2018 19:23

Не уверен, что еще добавить. Добавлен приведенный выше фрагмент кода, ничего не изменилось. Он выполняет команду sendkey, как и перед ее добавлением, но не отправляет текст в поле ввода предупреждения. Нет никаких исключений, которые я могу добавить в свой комментарий. Что еще поможет вам улучшить вашу реакцию. Я был бы счастлив добавить его, если вы меня поможете.

s7_user 01.12.2018 19:32

Попробуйте с этим кодом

Alert alert = driver.switchTo().alert();
System.out.println(alert.getText());
alert.sendKeys("testing");
alert.accept();
Thread.sleep(2000);
System.out.println(alert.getText());

Если по-прежнему не работает, понизьте версию драйвера Chrome. Я надеюсь, что это сработает.

После того, как я столкнулся с той же самой проблемой, я пришел к выводу, что это чисто проблема с дисплеем. Ввод sendKeys (...) будет отправлен после того, как вы примете предупреждение.

См. Также ответ в этой проблеме Chromium: https://bugs.chromium.org/p/chromedriver/issues/detail?id=1120#c11

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

Попробуйте и посмотрите результат

Maple2d 30.11.2020 03:55

Другие вопросы по теме