如何单击日期选择器硒VBA?

时间:2018-10-08 06:58:31

标签: vba selenium selenium-webdriver web-scraping

我想使用硒VBA从Yahoo Finance KOSPI COmposite Index下载一些数据。

单击日期选择器箭头以打开一个微型窗口以选择结束日期为今天时,我遇到了困难。我试图通过Chrome中的Selenium IDE记录marco,但是当我单击“时间段”的箭头以使日期选择器可见时,IDE不会记录该步骤。

下面是我在VBA中的代码。

MANAGED

我试图使用ByXPath来获取svg类,但是失败了。

谢谢。

2 个答案:

答案 0 :(得分:1)

如果需要,我将使用以下内容提交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

答案 1 :(得分:0)

检查一下。它应该达到目的。我用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秒钟。