【问题标题】:Selenium VBA - Click on a Download ButtonSelenium VBA - 单击下载按钮
【发布时间】:2022-01-26 01:00:38
【问题描述】:

我是 selenium v​​ba 的新手,我正在尝试单击下载按钮,此按钮位于一种 p​​d​​f iFrame 中:

这是一些 HTML:

<cr-icon-button id="download" iron-icon="cr:file-download" aria-label="Fazer o download" title="Fazer o download" aria-haspopup="false" aria-disabled="false" role="button" tabindex="0"></cr-icon-button>

这是我迄今为止尝试过的:

 1 : ChromoLink.FindElement(By.linktext("Fazer o Download")).Click
 2 : ChromoLink.FindElementByLinkText("Fazer o Download").Click
 3 :ChromoLink.FindElementsByCss("input")(1).Click
 4: ChromoLink.FindElementByClass("toolbarButton download hiddenMediumView").Click
 5: ChromoLink.FindElementById("download").Click
 6: ChromoLink.FindElementByXPath("/html/body/pdf-viewer//viewer-toolbar//div/div[3]/viewer-download-controls//cr-icon-button//div/iron-icon").Click
 7: ChromoLink.FindElementByXPath("/html/body/pdf-viewer//viewer-toolbar//div/div[3]/viewer-download-controls//cr-icon-button//div/iron-icon").ClickAndHold
 8: ChromoLink.FindElementByXPath("/html/body/pdf-viewer//viewer-toolbar//div/div[3]/viewer-download-controls//cr-icon-button//div/iron-icon").Click
 9: ChromoLink.FindElementByXPath("//*[@id=""download""]").ClickAndHold
10: ChromoLink.FindElementByCss("[title='baixar']").Click

这些都不起作用

错误:

我知道 print 这不是一个好主意,但我不能只复制整个 html:

【问题讨论】:

  • 为了获得更好的帮助,您能否分享您正在执行这些操作的站点链接?
  • @GurmanjotSingh 这是一个内部网站,所以我无法分享链接。但是,我添加了一张图片。

标签: excel vba selenium xpath css-selectors


【解决方案1】:

首先要在元素上使用click(),您必须切换到iframe,您可以使用以下Locator Strategies之一:

  • FindElementsByCss

    ChromoLink.SwitchToFrame "iFrameReport"
    ChromoLink.FindElementByCss("cr-icon-button#download[title='Fazer o download'][aria-label='Fazer o download']").Click
    
  • FindElementByXPath 相对于声明

    ChromoLink.SwitchToFrame "iFrameReport"
    ChromoLink.FindElementByXPath("//cr-icon-button[@id='download' and @title='Fazer o download'][@aria-label='Fazer o download']").Click
    

【讨论】:

  • 它还没有工作,我意识到元素在 iFrame 内,并且 iFrame 的名称是 id="iFrameReport" 所以,我 SwitchToFrame 但响应并给我一个arror。
  • @Pedro 添加了帧切换的代码。让我知道状态。
  • 通过 FindElementsByCss 或 FindElementByXPath 进行帧切换后,它报告“未找到元素”。
  • @Pedro 在两行之间引入一些等待
  • 我已经在切换框架和找到元素之间使用了一些等待,也许它没有到达元素。
猜你喜欢
  • 2022-01-11
  • 1970-01-01
  • 2021-03-10
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 2022-01-19
  • 1970-01-01
相关资源
最近更新 更多