Probleme mit der MoveToElement-Funktion in Selenium Webdriver for C#. Das MoveToElement scheint nichts zu tun.Selenium MoveToElement funktioniert nicht, wenn Element nicht von XPath gefunden wird
Ich habe folgende HTML:
<div id="rounded-navigation-with-icons">
<ul>
<li class="navigation-item">
<a href="Members" target="_self" class="navigation-item-title"></a>
<ul>
<li>
<a href="MembersTestPage" target="_self"></a>
</li>
</ul>
</li>
</ul>
</div>
Die am weitesten innen Liste wird zunächst versteckt, bis der Navigationspunkt mit der Maus schwebt über ist.
Ich habe dann den folgenden Code, um auf den Navigation-Element-Titel zu klicken, der für Selenium sichtbar ist, und klicken Sie dann auf den MembersTestPage-Link.
public bool SearchForElement(string elementToFind, Page.FindBy by)
{
var navigation = Page.FindElement("rounded-navigation-with-icons", Page.FindBy.ID);
if (navigation != null)
{
foreach (var item in navigation.FindElements(By.ClassName("navigation-item")))
{
var titleElements = Page.FindElements("navigation-item-title", Page.FindBy.ClassName);
Actions action = new Actions(Driver.Instance);
foreach (var moveToItem in titleElements)
{
try
{
// Move to the main navigation link container element, but it doesn't work
action.MoveToElement(moveToItem);
// Move the mouse position manually to the link's location
action.MoveByOffset(moveToItem.Location.X, moveToItem.Location.Y);
// This does correctly find the element
var element = Page.FindElement("a[href='MembersTestPage']", Page.FindBy.CssSelector);
action.MoveToElement(element);
// Click returns that the element is hidden/invisible and therefore cannot be clicked
element.Click();
return true;
}
catch (Exception)
{
}
}
}
}
return false;
}
Sie können sehen, ich habe moveToElement verwendet, indem das Element vorbei, und auch durch manuell die X- und Y-Werte des Elements vorbei, aber weder arbeiten.
Wenn ich die Elemente von XPath finden, funktioniert dies wie erwartet.
Was mache ich falsch? Dank
Das hat perfekt funktioniert. Ich kann nicht glauben, dass es so einfach war, danke! – youyong