Atata框架技术求助:新手如何访问隐藏导航菜单
解决Atata框架中访问隐藏导航菜单的问题
刚接触Atata踩这种隐藏控件的坑太正常了!从你贴的HTML代码来看,这个导航是典型的下拉隐藏式菜单——父元素(就是那个ABOUT THE PROJECT的span)带了hasDropDownLinks标识,下拉列表默认有hidden类,得先触发父元素的交互(点击/悬停)让菜单显示出来,才能操作里面的子链接。下面给你两种实用的解决方案:
方案1:点击父元素展开菜单后再操作子链接
Atata的控件定位和交互逻辑很清晰,我们先把页面上的控件映射出来,再一步步执行操作:
第一步:定义页面控件类
在你的Page类里添加对应控件的定义,用Atata的属性定位即可:
using Atata; public class ProjectPage : Page<ProjectPage> { // 定位触发下拉的父元素,用ID定位最准确 [FindById("aboutTheProject")] public Clickable<ProjectPage> AboutTheProjectTrigger { get; private set; } // 定位下拉里的Vision链接,用href或者title定位都可以,选你觉得靠谱的 [FindByHref("/Vision")] public Clickable<ProjectPage> VisionMenuLink { get; private set; } }
第二步:执行交互流程
在测试方法里,先点击父元素展开隐藏菜单,再点击目标链接:
Go.To<ProjectPage>() .AboutTheProjectTrigger.Click() // 点击父元素,让下拉菜单显示出来 .VisionMenuLink.Click(); // 现在菜单可见了,直接点击就行
方案2:如果菜单是悬停触发的
有些网站的下拉菜单是鼠标悬停才显示的,这时候把Click()换成Hover()就行:
Go.To<ProjectPage>() .AboutTheProjectTrigger.Hover() // 悬停在父元素上展开菜单 .VisionMenuLink.Click();
小技巧:应对菜单展开延迟
如果偶尔遇到菜单展开慢导致定位失败的情况,可以给子链接加个等待可见的属性,让Atata自动等控件显示出来再操作:
[FindByHref("/Vision"), WaitUntil(WaitUntilVisibility.Visible)] public Clickable<ProjectPage> VisionMenuLink { get; private set; }
这样基本就能解决你遇到的隐藏菜单访问问题啦~
内容的提问来源于stack exchange,提问作者oceano1970526
相关产品推荐
相关产品推荐

