Selenium оставляет управление после нажатия кнопки "Обзор файлов" в MS Edge

Selenium оставляет управление после нажатия кнопки "Обзор файлов" в MS Edge. Это прекрасно работает в Chrome и Firefox, но абсолютно блокирует запуск следующего шага в коде. Я пробовал код всеми возможными способами, и приведенный ниже код работает, чтобы нажать кнопку "Обзор", но после этого шага селен покидает контроль, потому что открывается окно проводника. Это проблема с Selenium или MS Edge?

шаги:

1. Open ajax web application through MS Edge (works)
2. Click to browse button through web driver core or java script method (works)
3. Selenium gone, leaves control till we close file explorer button (doesn't work) - this works fine in GC and FF.
4 (Blocked). Send key to type file name or implement AutoIt script (works)
5 (Blocked). Click to open button via AutoIt script (works)
6 (Blocked). File attached fine (works)

Рабочий код:

driver.findElement(By.id("browseID")).click();

А ТАКЖЕ

WebElement we = null;
((JavascriptExecutor)ClientSessionFactory.session().webDriver()).executeScript("document.getElementsByName('browseName')[0].click()", we);

Среда:

Selenium version - Latest 3.6.0
Browser - MS Edge
MS Edge Driver - Latest Release 15063
Application type - Ajax web

Это фактически блокирует функциональность вложений, и было бы здорово, если селен это исправит. Пока я просто вижу, что Autoit - это решение в качестве стороннего программного обеспечения, но очень утомительно добавлять отдельные сценарии для каждой кнопки обзора в приложении, любого кода с помощью блоков селена из-за появления диалогового окна ОС.

1 ответ

Я столкнулся с той же проблемой. Одним из решений может быть манипулирование окном "обзора" с использованием сценария Auto-It (например). Прямо перед тем, как нажать на кнопку "Обзор", запустите скрипт Auto-It и установите команду "сна" в начале, чтобы ждать 1-2 секунды. Теперь вы можете нажать на кнопку "Обзор". У меня отлично работает.

Та же проблема. Чтобы исправить это, я изменил сценарий AutoIt, используя WinWaitActive() в качестве первой директивы для ожидания, пока не станет активным окно. Я запускаю сценарий в параллельном процессе (subprocess.Popen в python) непосредственно перед открытием загрузки файла

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