【发布时间】:2018-01-15 12:32:46
【问题描述】:
使用 selenium 在 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
【问题讨论】:
-
你为什么不去这里? public.hcad.org/records/quicksearch.asp
-
没办法。如果我忽略第一个 iframe。目标页面中还有其他人。我想知道vba中是否有切换iframe的选项
-
我会从删除
FindElementByTag的返回值周围的这些无关括号开始,这看起来非常像它正在返回一个对象引用 - 这是传递ByVal的一个非常非常糟糕的主意就像你用这些括号做的那样。 -
@Shahin,当您在 SO 上发布问题时,请包含 所有 信息,例如导致错误的代码行。你所做的只是,说你有一个错误,但你没有说错误发生在哪里。你的程序很简单,所以很容易猜测错误发生在哪里。如果您的程序更复杂,我怀疑在您提供信息之前有人会费心帮助您。
-
抱歉 jsotola 延迟回复。我遇到了停电。
标签: vba selenium iframe selenium-webdriver web-scraping