2017-08-08 36 views
0

使用硒在vba中编写脚本以便在运行iframe时切换iframe,但出现错误:对象不支持此属性。如果我以下面的例子作为考虑,我该怎么做?如何使用硒vba切换iframe?

Sub HCAD() 
    Dim driver As New ChromeDriver 

    driver.Get "http://hcad.org/quick-search/" 
    driver.Wait 500 
    driver.SwitchToFrame (driver.FindElementByTag("iframe")) 
End Sub 

这是我试图从目标页面获取地址名称的脚本。当我到达那里时,我遇到了另一个iframe,所以最终没有得到任何东西。对于我在脚本中提到的地址,只有一个名字。

Sub HCAD() 
    Dim driver As New ChromeDriver 
    Dim post As Object 

    driver.Get "https://public.hcad.org/records/quicksearch.asp" 
    driver.Wait 500 
    driver.FindElementById("s_addr").Click 
    driver.FindElementByName("stnum").SendKeys ("8227") 
    driver.FindElementByName("stname").SendKeys ("FINDLAY ST") 
    driver.FindElementByXPath("//input[@value='Search']").Click 
    driver.Wait 1000 

    Cells(1, 1) = driver.FindElementByXPath("/html/body/table/tbody/tr/td/table[5]/tbody/tr[2]/td[1]/table/tbody/tr/th").Text 

End Sub 
+0

你为什么不只是去这里? https://public.hcad.org/records/quicksearch.asp – jsotola

+0

没办法。如果我忽略第一个iframe。目标页面中还有其他人。我想知道在vba中是否有任何选项来切换iframe – SIM

+1

我将首先删除围绕“FindElementByTag”的返回值的这些多余的括号,这看起来非常像它返回一个对象引用 - 这是一个非常非常糟糕的想法,就像你用这些圆括号一样通过'ByVal'。 –

回答

0

一些额外的功能,良好的添加到您的代码

顺便说一句..细胞(1,1)线路发生故障时

Sub HCAD() 

    ' add ref: Selenium Type Library 

    Dim driver As New ChromeDriver ' PhantomJSDriver (this one is for "headless" browsing) 

    driver.Get "https://public.hcad.org/records/quicksearch.asp" 
    driver.Wait 500 
    driver.FindElementById("s_addr").Click 
    driver.FindElementByName("stnum").SendKeys ("8227") 
    driver.FindElementByName("stname").SendKeys ("FINDLAY ST") 
    driver.FindElementByXPath("//input[@value='Search']").Click 
    driver.Wait 1000 

    Dim bbb As Object 
    Set bbb = driver.TakeScreenshot 
    bbb.ToExcel Cells(5, 1) 
    Set bbb = Nothing 


    Cells(1, 1) = driver.FindElementByXPath("/html/body/table/tbody/tr/td/table[5]/tbody/tr[2]/td[1]/table/tbody/tr/th").Text 

    Set driver = Nothing 

End Sub