【发布时间】:2017-11-06 18:22:45
【问题描述】:
我正在为旧的“基础设施”(我对此不太了解)页面编写硒 C# 测试代码。在元素引用方面,该页面没有给我太多选择。就像在下面的 HTML 中一样,我想单击 INVENTORY,它是菜单项的子菜单,但没有元素 ID 或名称,所以我使用了 XPath(参见下面的代码)。看起来 webdriver 可以识别 xpath,但是当 click 函数执行并完成时,页面上没有任何反应。它没有打开预期的页面。我在这里做错了什么吗?
<li class="igdm_MenuItemVertical igdm_MenuItemVerticalParent " unselectable="on" data-ig="x:1171509256.11:adr:1.2" adr="1.2"><A onclick="{return false;}" tabIndex=-1 class="igdm_MenuItemVerticalLink " href="#/Inventory...">
<a onclick="{return false;}" tabIndex=-1 class="igdm_MenuItemVerticalLink>
<img class="igdm_MenuItemVerticalIcon " alt=" Inventory..." src="../Images/report16.gif">
<span tabIndex=-1 unselectable="on"> INVENTORY...</span>
</a>
代码:
private By FileSubMenu = By.XPath(".//li/a/span[text()=' Inventory...']");
public HomePage SubMenu()
{
int retryCount = 0;
while (true && retryCount < Constants.RETRY_COUNT)
{
try
{
Thread.Sleep(3000);
IWebElement element = _driver.FindElement(FileSubMenu);
Actions Rmouseover = new Actions(_driver);
Rmouseover.MoveToElement(element).Click().Perform();
return this;
}
catch (Exception ex) when (ex is WebDriverTimeoutException || ex is TimeoutException)
{
retryCount++;
Thread.Sleep(3000);
}
}
return this;
}
【问题讨论】:
-
可能是因为您的文字是大写的
INVENTORY...,而您正在查看text()=' Inventory...'? -
ACV,我在这里将其设为大写以突出显示我试图点击的内容。在我的代码中它不是大写的。不过感谢您的建议
-
通常使用子菜单,您首先必须在父菜单上单击或鼠标悬停
-
是的,父菜单的鼠标悬停功能有效。它就像我遇到问题的子菜单一样,它没有 Id、Name 元素。它与 LinkText 元素查找器一起使用。相同的功能不适用于鼠标悬停或单击的子菜单
标签: javascript selenium xpath