Как нажать кнопку выбора даты селен VBA? - PullRequest
0 голосов
/ 08 октября 2018

Я хотел бы использовать селен VBA для загрузки некоторых данных из Yahoo Finance KOSPI COmposite Index .

У меня возникли трудности при нажатии стрелки выбора даты, чтобы открыть мини-окновыберите дату окончания, как сегодня.Я пытался записать марко через селен IDE в chrome, но IDE не записывает шаг, когда я нажимаю стрелку периода времени, чтобы увидеть средство выбора даты.

Ниже приведен мой код в VBA.

Public Function seleniumKorea(bot As WebDriver)
    Dim url As String
    url = "https://finance.yahoo.com/quote/%5EKS11/history?period1=1484018309&period2=1515554309&interval=1d&filter=history&frequency=1d"
    bot.Start "chrome", url
    bot.Get "/"

    'Not sure how to add date picker here        
    bot.FindElementByName("endDate").Clear
    bot.FindElementByName("endDate").SendKeys (Date)
    bot.FindElementByXPath("(.//*[normalize-space(text()) and normalize-space(.)='End Date'])[1]/following::button[1]").Click

    Application.Wait (Now + TimeValue("0:01:00"))

    bot.FindElementByXPath("(.//*[normalize-space(text()) and normalize-space(.)='As of'])[1]/following::div[4]").Click
    Application.Wait (Now + TimeValue("0:01:00"))
    bot.FindElementByXPath("(.//*[normalize-space(text()) and normalize-space(.)='Currency in KRW'])[1]/following::span[2]").Click

    Application.Wait (Now + TimeValue("0:01:00"))
End Function    

Я пытался использовать ByXPath для получения класса svg, но не смог.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Проверьте это.Это должно служить цели.Для решения этой проблемы я использовал xpath.

Sub CustomizeDate()
    Const Url$ = "https://finance.yahoo.com/quote/%5EKS11/history?period1=1484018309&period2=1515554309&interval=1d&filter=history&frequency=1d"
    Dim driver As New ChromeDriver

    With driver
        .get Url
        .FindElementByXPath("//input[@data-test='date-picker-full-range']", timeout:=5000).Click
        .FindElementByXPath("//input[@name='startDate']").Clear.SendKeys ("01/05/2017")
        .FindElementByXPath("//input[@name='endDate']").Clear.SendKeys ("01/08/2017")
        .FindElementByXPath("//button/span[.='Done']", timeout:=5000).Click
        .FindElementByXPath("//button/span[.='Apply']", timeout:=5000).Click
    End With
End Sub

Не используйте жестко заданную задержку для появления какого-либо элемента.Вместо этого используйте Explicit Wait.Сценарий будет ждать до 5000, что означает 5 секунд, чтобы этот элемент был доступен.

0 голосов
/ 08 октября 2018

Я бы использовал следующее, которое при необходимости передает согласие OATH и прокручивает средство выбора даты в окне просмотра

Option Explicit
Public Sub DatePicking()
    Dim d As WebDriver
    Set d = New ChromeDriver
    Const URL = "https://finance.yahoo.com/quote/%5EKS11/history?period1=1484018309&period2=1515554309&interval=1d&filter=history&frequency=1d/"

    With d
        .get URL
        If .Title = "Yahoo is now part of Oath" Then
            .FindElementByCss("form").submit
        End If

        With .FindElementByCss("[data-test='date-picker-full-range']")
            .ScrollIntoView
            .Click
        End With
        With .FindElementByCss("[name=startDate]")
            .Clear
            .SendKeys "05/10/2017"
        End With

        With .FindElementByCss("[name=endDate]")
            .Clear
            .SendKeys "05/10/2017"
        End With
        Stop                                     '<==Delete me later
        .Quit
    End With
End Sub
...