Selenium [VBA]:在无头模式下无法通过Google Chrome找到XPath

时间:2019-06-05 12:24:18

标签: excel vba selenium xpath google-chrome-headless

我尝试从Google获取一些商店/公司的电话号码等信息,并将其存储在Excel工作表中。我使用Chrome驱动程序( v_74.0.3729.6 )。 在普通模式下与Chrome配合使用时效果很好,它可以在XPath中找到元素,但是在无头模式中使用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中,但找不到该元素。

1 个答案:

答案 0 :(得分:0)

我已经使用require("devtools") #devtools::install_github("UrbanInstitute/urbnmapr") library(urbnmapr) household_data <- left_join(countydata, counties, by = "county_fips") household_data %>% ggplot(aes(long, lat, group = group, fill = medhhincome)) + geom_polygon(color = NA) + coord_map(projection = "albers", lat0 = 39, lat1 = 45) + labs(fill = "Median Household Income") 的chrome无头模式进行了验证,每次我运行此代码时,它都可以正常工作。 我使用了python selenium,它是显式的waiting和waiting,等待元素可单击,然后获取文本值。

我相信您可以在WebdriverWait中修改此代码。

VBA

输出:

  

+33 825 02 00 20