【发布时间】:2019-10-20 23:05:08
【问题描述】:
我正在尝试从 Google 获取信息,例如某些商店/公司的手机号码,并将其存储在 Excel 工作表中。
我使用 Chrome 驱动程序 (v_74.0.3729.6)。
它在普通模式下与 Chrome 一起工作,它使用 XPath 找到元素,但当我在 headless 模式下使用 Chrome 时却找不到。
我尝试改变窗口的大小并添加一些选项:
.AddArgument ("--window-size=1920,1080")
.AddArgument ("--no-sandbox")
.AddArgument ("--start-maximized")
.AddArgument ("--disable-gpu")
.AddArgument ("--disable-extensions")
我也尝试了不同的 XPath(但如果它在没有无头模式的情况下工作,我想 XPath 是正确的):
browser.FindElementsByXPath("(//span[@class='LrzXr zdqRlf kno-fv'])[1]")
browser.FindElementsByXPath("//*[@id='uid_6']/div[1]/div[2]/div[4]/div/div/span[2]")
我还尝试设置等待时间(以确保页面已完全加载):Application.Wait (Now + TimeValue("0:00:2"))
Dim browser As New ChromeDriver
With browser
.AddArgument ("--window-size=2160,3840")
.AddArgument ("--headless")
End With
denomination = "Fnac Lyon Bellecour"
adresse = "85 Rue de la République 69002 Lyon"
browser.Get ("https://www.google.com")
browser.FindElementByName("q").SendKeys (denomination & " " & adresse)
SendKeys "~"
Application.Wait (Now + TimeValue("0:00:2"))
If browser.FindElementsByXPath("(//span[@class='LrzXr zdqRlf kno-fv'])[1]").Count >= 1 Then
telephone = browser.FindElementByXPath("(//span[@class='LrzXr zdqRlf kno-fv'])[1]").Text
Sheets("Donnees").Cells(1, 13).Value = telephone
End If
它通常会复制单元格M1中商店的手机号码,但它找不到元素。
【问题讨论】:
-
我已经尝试使用带有 chrome 无头模式的 python selenium,它工作正常。
-
不需要使用索引,因为它只是元素
//span[@class='LrzXr zdqRlf kno-fv'] -
你得到什么错误信息,在哪一行?
-
@KunduK :它在 Python 上也适用于我,但我不知道为什么它不适用于 headless 模式 上的 Excel 上的 VBA。使用 VBA 在普通模式下没问题。
-
@QHarr 使用此代码我没有错误,程序只是没有进入“If”循环。
标签: excel vba selenium xpath google-chrome-headless