【问题标题】:VBA elements not found in iframe在 iframe 中找不到 VBA 元素
【发布时间】:2021-09-27 14:46:37
【问题描述】:

我正在尝试在 VBA 上使用 selenium 获取数据。我想先单击一个单选框以到达所需的页面。

以下代码导致“索引超出范围”错误,因为没有符合条件的元素(当我执行 driver.FindElements(by.ID("DATAINI")) 时,它显示 0)。

Dim driver As New webdriver
    driver.Start "ie"
    driver.get fileLocation 'At this point, the website is properly opened.
    Application.Wait Now + TimeValue("00:00:20")
    Dim by As New by
With driver
   .SwitchToFrame .FindElementByTag("iframe")
   .FindElements(by.ID("DATAINI"))(0).Click 
End With

但是,当我检查代码时,有些元素具有我指定的 ID。我该如何解决这个问题?

【问题讨论】:

  • 嗨。你试过FindElement 吗?另外,您是否检查过您已切换到正确的 iframe?请问可以提供网址吗?你能不能简单地将driver.get 转换为我们在上图中看到的src 值?请通过edit 使用sn-p 工具插入html,我们可以复制粘贴,而不是图像。我也没有在上图中看到那个 ID(但我刚刚醒来)。
  • 感谢@QHarr,网址如下: 我尝试了 driver.SwitchToFrame,但没有成功。我不熟悉网络抓取,但无论如何我都必须这样做。

标签: css vba selenium web-scraping iframe


【解决方案1】:

我想,页面有不止1个iframe,所以你肯定不能使用TagName来定位正确的iframe。

您可以尝试使用以下 css :

driver.SwitchToFrame driver.FindElementByCss("iframe[src^='https://ptax.bcc.gov.br/ptax']")

然后你就可以和DATAINI互动了,我在上面的截图中没有看到。

【讨论】:

  • 谢谢,但是没有用。此代码中没有此类元素错误。请原谅我的错误,但 DATAINI 确实存在……我尝试了其他元素,但没有一个起作用。
  • 我相信我们必须确定正确的 iframe,您可以查看开发工具iframe[src^='https://ptax.bcc.gov.br/ptax'] 吗?如果存在?
  • 我明白了!源 URL 不同,因此我对其进行了修改并能够导航到 iframe。我仍然无法访问该元素;我编辑了问题中的图片(我知道我应该上传代码而不是图片,但我不知道该怎么做)
  • 我仍然无法在 HTML 中看到 DATAINI
  • 我刚刚修改了一些变量名,现在可以使用了,非常感谢!
猜你喜欢
  • 2021-10-13
  • 1970-01-01
  • 2016-05-28
  • 2021-12-30
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多