2017-08-08 68 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