如何在VBA中使用selenium webdriver单击框架内的按钮?

问题描述 投票:0回答:2

我为一个有框架的网页进行了自动化,我需要点击几个菜单链接才能返回maincontent来完成任务。此自动化从Access-VBA运行。以下是显示框架的HTML片段:

<frameset id="topFrameset"> 
  <frameset id="BodyFrameset" cols="0,177,*">
    <frame name="ButtonsFrame" id="ButtonsFrame" target="main" scrolling="NO" noresize="" src="MyMenu.action">
      #document
      <html>
      <body>
        <input type="hidden" name="listParentsId" value="[501, 502, 503]" id="listParentsId">
        <div id="menu_container">
          <div id="menu_1" onmouseover="MENU.ToolTipsCreate('501')">
            <a onclick="MENU.showItems('501', '')">My Account</a>
            <img id="img_501" src="/common/images/dropdown2_arrow.png" onclick="MENU.showItems('501', '')">
          </div>
        </div>		
      </body></html>
    </frame>
  </frameset>
</frameset>

我正在使用SeleniumBasic v2.0.9.0绑定VBA。请参阅Browser automation in Excel VBA using Selenium以获取安装和教程。

我尝试了webdriver.SwitchToFrame,在许多其他测试中,所有这些都失败了。

Dim driver As selenium.WebDriver
Set driver = New ChromeDriver
driver.Get (URL)

'Here goes the part of the code that logs in the page, it's irrelevant for this analysis...

driver.SwitchToFrame ("topFrameset") 'This line returns Error N°: 8 - NoSuchFrameError. Frame not be found. Identifier:topFrameset

希望有人可以指导我点击“menu_1”中的链接或img元素。提前致谢。

selenium-webdriver access-vba frame
2个回答
0
投票

在'示例测试2'中,你能评论这行driver.SwitchToDefaultContentand尝试吗?为什么在切换到帧之前切换到defaultcontent?

defaultContent - >切换回默认页面

尝试其他选项:(在JAVA中,我们这样做。)

switchTo().frame(int) – Switch to a frame with its index switchTo().frame(“name of the frame”) – Switch to a frame with its name switchTo().frame (WebElement) – Switch to a frame with its web element location


0
投票

经过这么多工作后,我自己找到了解决方案。我在Google商店安装了应用程序“SideeX”。然后我记录了我需要用Selenium模拟的动作。然后,我注意到我在原始问题(topFrameset,BodyFrameset,ButtonsFrame)中描述的名称由SideeX通过其索引记录的帧。所以我只需要与Selenium执行相同的操作。例如,在我的情况下,我有以下一系列操作:

driver.SwitchToFrame 0
driver.SwitchToFrame 1
driver.FindElementById("img_501").Click
driver.SwitchToParentFrame
driver.SwitchToFrame 2

这只是我的情况,但对于遇到同样问题的其他人来说,重要的是要知道您可以使用SideeX来帮助您找到实现目标所需的元素索引或操作序列。

© www.soinside.com 2019 - 2024. All rights reserved.