C# 无法使用webdriver在for each循环中的多个选项卡上悬停
我有一个表单编辑器web应用程序,用于创建表单和工作流。应用程序的主页左侧包含一个菜单 菜单看起来像 当我将鼠标滑过任何选项卡时,都会得到一个工具提示 我目前正在尝试使用SeleniumWebDriver和c#验证这一点。下面是菜单的HTMLC# 无法使用webdriver在for each循环中的多个选项卡上悬停,c#,selenium,C#,Selenium,我有一个表单编辑器web应用程序,用于创建表单和工作流。应用程序的主页左侧包含一个菜单 菜单看起来像 当我将鼠标滑过任何选项卡时,都会得到一个工具提示 我目前正在尝试使用SeleniumWebDriver和c#验证这一点。下面是菜单的HTML <div class="tabmenu"> <div class="tab-list"> <div class="mask"></div> <ul class="leve
<div class="tabmenu">
<div class="tab-list">
<div class="mask"></div>
<ul class="level1" style="left: 0px;">
<li class="l1-item top" title="">
<span class="selection-top"></span>
<table class="mover">
<tbody>
<tr>
<td class="tooltip">
<span>Create Flow</span>
</td>
<td>
<span class="logo logo12">
<span class="status status-none"></span>
</span>
</td>
</tr>
</tbody>
</table>
<span class="selection-bottom"></span>
<div class="hr"></div>
</li>
<li class="l1-item prev" title="">
<span class="selection-top"></span>
<table class="mover" style="left: -110px;">
<tbody>
<tr>
<td class="tooltip">
<span>Dashboard</span>
</td>
<td>
<span class="logo logo11">
<span class="status status-none"></span>
</span>
</td>
</tr>
</tbody>
</table>
<span class="selection-bottom"></span>
<div class="hr"></div>
</li>
</ul>
</div>
</div>
-
创建流
-
仪表板
当我将鼠标移到任何选项卡上时,li”)]
[缓存查找]
私有IList LeftMenuItems;
公共bool isToolTipPresentOnEachTab()
{
foreach(LeftMenuItems中的IWebElement元素)
{
动作动作=新动作(驱动);
action.MoveToElement(ele.Perform();
if((ele.findelelement(By.CssSelector(“td.tooltip>span”))).GetAttribute(“textContent”)!=“创建流”
&&!ele.GetAttribute(“类”)。包含(“showtooltip”)){
返回false;
}
}
返回true;
}
我只在循环的第一次迭代中得到工具提示,而测试在第二次迭代中失败
有人能帮我解决这个问题吗?这里的IF条件应该做什么?因为您的第一次迭代成功了,我建议尝试在action.MoveToElement(ele.Perform()之后添加等待(~1s));查看是否只是等待工具提示出现的问题。如果条件检查某个特定选项卡名称,而工具提示不会出现,则只需返回false,以防所有其他选项卡的工具提示都不会出现。是否尝试像我之前的评论中那样添加等待?是的,我尝试了,但等待没有影响。查找g目前的其他解决方法:)
[FindsBy(How = How.CssSelector, Using = "ul.level1 > li")]
[CacheLookup]
private IList<IWebElement> LeftMenuItems;
public bool isToolTipPresentOnEachTab()
{
foreach (IWebElement ele in LeftMenuItems)
{
Actions action = new Actions(driver);
action.MoveToElement(ele).Perform();
if((ele.FindElement(By.CssSelector("td.tooltip > span")).GetAttribute("textContent")) != "Create Flow"
&& !ele.GetAttribute("class").Contains("showtooltip")){
return false;
}
}
return true;
}