Как сделать скриншот конкретного идентификатора на сайте IE с VBA и Selenium - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь сделать снимок экрана определенного идентификатора, который содержит таблицу прогнозов погоды на неделю (https://forecast.weather.gov/MapClick.php?lat=41.8843&lon=-87.6324#.W5kg1ehKiUk,, а идентификатор - "семидневный прогноз тела"), но мой код не отображаетсяработать, и я нашел несколько примеров VBA.Вот с чем я работаю.Большое спасибо, спасибо.

Sub seleniumtutorial()

Dim bot As New WebDriver

bot.Start "IE", "https://forecast.weather.gov/MapClick.php?lat=41.8843&lon=-87.6324#.W5kg1ehKiUk"

bot.Get "/"

bot.FindElementById("seven-day-forecast-body").SaveAs (ActiveWorkbook.Path + "/chicago.jpg")

bot.Quit

End Sub

1 Ответ

0 голосов
/ 12 сентября 2018

Синтаксис

bot.TakeScreenshot.SaveAs ActiveWorkbook.Path + "/chicago.jpg"

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

Вы можете использовать функцию прокрутки селена для центрирования вашего изображения на конкретном элементе.


Элемент прокрутки к центру:

Option Explicit
Sub seleniumtutorial()

    Dim bot As New WebDriver

    bot.Start "IE", "https://forecast.weather.gov/MapClick.php?lat=41.8843&lon=-87.6324#.W5kg1ehKiUk"

    bot.get "/"

    Dim element As Object
    Set element = bot.FindElementById("seven-day-forecast-body")

    Dim scrollElementIntoMiddle As String
    scrollElementIntoMiddle = "var viewPortHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);" _
                            + "var elementTop = arguments[0].getBoundingClientRect().top;" _
                            + "window.scrollBy(0, elementTop-(viewPortHeight/2));"

    bot.ExecuteScript scrollElementIntoMiddle, element

    bot.TakeScreenshot.SaveAs ActiveWorkbook.Path + "/chicago.jpg"

    bot.Quit

End Sub

Альтернатива:

bot.ExecuteScript "arguments[0].scrollIntoView();", element
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...