来自.aspx

时间:2018-04-23 09:58:20

标签: vba excel-vba excel

我正在尝试从以下website自动执行数据收集过程。

我在第一个任务中失败了,就是点击按钮并提交邮政编码。

  1. 代码的第一部分应点击左键 Pflegeeinrichtungen und Betreuungsangebote ,它会通过4个按钮扩展选择。
  2. 之后,应单击第二个按钮stationärePflegeeinrichtung以进一步扩展选择。
  3. 最后一个选择应该是VollstationärePflege
  4. 要将searchButton的状态更改为可点击,必须在searchBar中输入邮政编码,该邮政编码会根据输入的邮政编码显示提案。必须选择其中一个提案来改变searchButton的状态,只输入邮政编码是不够的。

    到目前为止,我设法点击第二个(2.)和第三个(3.)按钮并在searchBar中输入邮政编码。 Excel打开IE窗口并单击按钮,但由于未事先单击第一个(1.)按钮,因此它甚至不显示2.和3.按钮。如果在执行VBA代码后手动单击第一个按钮,我可以看到选择了2.和3.按钮。

    我的问题是:

    1. 如何通过VBA点击第一个按钮?
    2. 如何提交搜索输入的邮政编码?
    3. 如何选择其中一个提案? (它甚至不重要。)
    4. 我设法通过以下方式点击按钮:

      .getElementById("ctl00_ContentPlaceHolder1_suche_btn_versorgung2").Click
      

      "ctl00_ContentPlaceHolder1_suche_btn_pflegeart1" for "vollstationäre Pflege"
      

      非常感谢您提前

1 个答案:

答案 0 :(得分:0)

最后我放弃并使用了selenium basic VBA wrapper,以下是你用VBA做的事情。除Chrome之外,您还可以使用其他支持的浏览器。

<强>代码:

Option Explicit
Public Sub test()
    Dim d As WebDriver
    Set d = New ChromeDriver 
    Const DATA_OPTION As Long = 1                '<== 1 bist Pflege­einrichtungen und Betreuungs­angebote , oder für Pflegeberatung verwenden 2: .....("button[data-tab=""2""]")
    Const LOCATION  As String = "10777 Berlin/Schöneberg" '<== Wo möchten Sie suchen?
    Const CARE_SETTING As Long = 1               '<== 1 für Ambulanter Pflegedienst. Oder: 2.Stationäre Pflegeeinrichtung ; 3.Angebote zur Unterstützung im Alltag ; 4. Häuslicher Betreuungsdienst

    With d
        .Start "Chrome"
        .Get "https://www.pflegelotse.de/(S(x2hdp4ld1i0ok4y0q2upqasz))/presentation/pl_startseite.aspx"
        .FindElementByCss("button[data-tab=""" & DATA_OPTION & """]").Click

        Application.Wait Now + TimeSerial(0, 0, 1)

        .FindElementByCss("button[data-value=""" & CARE_SETTING & """]").Click
        .FindElementById("ctl00_ContentPlaceHolder1_suche_bezirk").SendKeys LOCATION

        Application.Wait Now + TimeSerial(0, 0, 1)

        Dim keys As New keys
        .SendKeys keys.Enter

        Application.Wait Now + TimeSerial(0, 0, 1)

        .FindElementById("ctl00_ContentPlaceHolder1_suche_btn_suche").Click

        Stop

        .Quit
    End With
End Sub

在行动中:

In action