想要使用 VBA、Excel 和 Selenium 抓取从页面返回的文本

Want to Grab Text Returned From A Page Using VBA, Excel, and Selenium

我正在使用 Excel 2010、VBA 和 Selenium(由于 IE 无法正确处理目标网站 page)。所以我改用硒。

我可以执行第 1 步和第 2 步。

  1. 将域名插入 "domainToCheck" 文本框
  2. 单击 "GoValue™" 按钮
  3. 从结果页面获取估计值

页面 returns 一个评估值以及我想捕获并放入我的电子表格中的那个值。我的代码如下:

Public Sub getAppraisal()

Dim oBrowser    As New WebDriver
Dim oElement    As WebElement

Dim sEstimate   As String

Dim oCell       As Range
Dim oRng        As Range

oBrowser.Start "Firefox"

Set oRng = Range(Worksheets("sheet1").Range("A2"), Worksheets("sheet1").Range("A2").End(xlDown))

For Each oCell In oRng
    'GO TO THE APPRAISAL WEBPAGE
    oBrowser.Get "https://www.godaddy.com/domain-value-appraisal"
    'ENTER THE DOMAIN NAME TO BE APPRAISED
    oBrowser.FindElementByName("domainToCheck").SendKeys (oCell.Value)
    'CLICK THE SUBMIT BUTTON
    oBrowser.FindElementByClass("input-group-btn").Click
    oBrowser.Wait 1000
    'GRAB THE ESTIMATED VALUE
    sEstimate = oBrowser.FindElementByClass("dpp-price price").Value '<--- ERROR IS HERE "INVALID SELECTOR ERROR"

    'POPULATE THE ESTIMATE NEXT TO THE DOMAIN NAME ON THE SHEET
    oCell.Offset(0, 1).Value = CCur(sEstimate)
Next

oBrowser.Quit
Set oBrowser = Nothing

结束子

电子表格如下:

包含结果的HTMLDIV如下:

<div class="exact-domain-result"><div class="d-block wrap-text"><h1 class="m-b-1">activefs.com</h1></div><h3><span><img src="https://img1.wsimg.com/DomainValuation/icn-godaddy-valuation.png" style="padding-bottom: 7px;"> </span><span class="dpp-price"><span class="text-muted"><span>Estimated Value:</span></span></span> <span class="dpp-price price"><strong>,774</strong></span> <span id="currencyLabel"></span><sup><span><span class="d-block-inline valuation-tooltip"><span> <span style="cursor: pointer; outline: medium none;" class="uxicon uxicon-help" aria-haspopup="true" role="button"></span></span></span></span></sup></h3></div>

根本原因:

如果你查看跨度 html 节点 dpp-price 价格 不是单个 class,你有 dpp-price价格 class 是的。考虑到它只有一个 class,您正在尝试查找该元素,这就是为什么当 selenium 尝试查找该元素时您会遇到异常的原因。

如何解决问题:

您可以使用 css selector/xpath 来查找元素,如下所示。

# css selector
.dpp-price.price
#xpath
//span[@class='dpp-price price']