VBA-使用ng-click进行网页抓取

时间:2019-08-16 22:14:51

标签: excel vba selenium web-scraping automation

我正在使用Selenium,我希望能够单击以下内容

<a ng-click="download()">download</a>'

这是一个“ a”标签。 我不确定代码如何单击进入带有ng-click的'a'标签。

  Dim d As WebDriver
  Set d = New ChromeDriver
Const URL = "url of the website - not public"
With d
    .Start "Chrome"
    .get URL
    .Window.Maximize
    .FindElementById("Search").SendKeys "information to search"
    .Wait 1000
    .FindElementById("Submit").Click
    .Wait 1000
    'then I need to click the following <a ng-click="download()">download</a>
End With

我唯一想念的就是能够单击最后一点。谢谢您的提前帮助:)

4 个答案:

答案 0 :(得分:1)

您可以尝试使用.FindElementByXPath("//*[@ng-click='download()']").Click

@php $title = env('APP_NAME'); @endphp
@section('project_title', $title)

答案 1 :(得分:1)

这就是attribute = value CSS选择器的作用。您可以通过其值来定位ng-click属性:

d.FindElementByCss("[ng-click='download()']").click

答案 2 :(得分:1)

所需元素是Angular元素,您需要为 elementToBeClickable 引入 WebDriverWait ,并且可以使用以下Locator Strategies中的任何一个:

  • 使用FindElementByCss

    d.FindElementByCss("a[ng-click^='download']").click
    
  • 使用FindElementByXPath

    d.FindElementByXPath("//a[starts-with(@ng-click, 'download') and text()='download']").click
    

答案 3 :(得分:0)

查看更多相关的HTML代码会更容易(并且效率更高),但是您可以循环使用a标签,并找到包含文本download的标签。找到后,您可以尝试单击它,然后退出循环。

Dim a As Selenium.WebElement
For Each a In d.FindElementsByTag("a")
    If a.Text = "download" Then
        a.Click
        Exit For
    End If
Next