我为一个有框架的网页进行了自动化,我需要点击几个菜单链接才能返回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元素。提前致谢。
在'示例测试2'中,你能评论这行driver.SwitchToDefaultContent
and尝试吗?为什么在切换到帧之前切换到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
经过这么多工作后,我自己找到了解决方案。我在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来帮助您找到实现目标所需的元素索引或操作序列。