Selenium VBA: заполните Windows всплывающее окно для загрузки файла - PullRequest
0 голосов
/ 12 февраля 2020

Я не могу взаимодействовать с Windows PopUp, чтобы написать выделенный путь для загрузки файла в VBA с помощью Selenium из-за браузера Chrome.

Я нашел некоторые решения в Python но ничего в VBA. Вот почему я пытался преобразовать код в VBA, но безуспешно.

Ниже приведен пример кода:

Sub Fullfil_Windows_PopUp()
Dim driver
Dim elem

    Set Waiter = CreateObject("Selenium.Waiter")
    Set Assert = CreateObject("Selenium.Assert")
    Set driver = CreateObject("Selenium.ChromeDriver")

    'open the browser and the page
    driver.Get "https://fr.imgbb.com/"
    While Waiter.Not(InStr(driver.Title, "ImgBB — Upload Image — Hébergement d'images gratuit")): Wend

    'open upload window
    Set elem = driver.FindElementsByXPath("//*[@id='home-cover-content']/div[2]/a").Item(1)
    elem.Click

    'Trial 1
    driver.SwitchToWindowByTitle "Ouvrir" '--> NOK (error window not found)
    driver.SendKeys "D:\Test.jpg"

    'Trial 2
    driver.SwitchToAlert.SendKeys "D:\Test.jpg" '--> NOK (error No Alert present)


    'Trial 3
    Set wsh = CreateObject("WScript.Shell")
    wsh.SendKeys "D:\Test.jpg" '--> NOK (no action)


End Sub

Заранее спасибо за ваши предложения

1 Ответ

0 голосов
/ 12 февраля 2020

Я использовал «заднюю дверь», чтобы заполнить имя файла в окне файлового менеджера. Поскольку курсор уже находится в поле имени файла окна, я создал внешний сценарий в VBS для записи имени файла (и 2x TAB + ENTER для проверки окна).

Ниже кода VBS file:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "D:\Test.jpg"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"

И я выполняю этот скрипт после открытия окна менеджера файлов с селеном:

Sub Fullfil_Windows_PopUp()
Dim driver
Dim elem

    ' Chrome browser
    Set driver = CreateObject("Selenium.ChromeDriver")

    'open the browser and the page
    driver.Get "https://fr.imgbb.com/"
    Sleep 1000

    ' Open upload window
    Set elem = driver.FindElementsByXPath("//*[@id='home-cover-content']/div[2]/a").Item(1)
    elem.Click

    ' Write the filename with VBS script
    Set oWsh = CreateObject("Shell.Application")
    oWsh.ShellExecute "D:\filename.vbs"
    Set oWsh = Nothing
    Sleep 1500

End Sub

Но я продолжаю искать решение непосредственно с Selenium потому что, например, имя файла прямо указано в файле VBS, и его нелегко использовать как вариант.

...