C#のSelenium WebdriverでMoveToElement関数に問題があります。 MoveToElementは何もしないようです。ナビゲーション項目がマウスでホバーされるまで、要素が見つからない場合、セレンMoveToElementが機能しない
<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>
最も内側のリストを最初に隠されている:
は、私は、次のHTMLを持っています。
次に、Seleniumに表示されているnavigation-item-titleをクリックし、MembersTestPageリンクをクリックする次のコードを入力します。あなたは、私が要素を渡すことによって、また、手動でのアイテムのXとYの値を渡すことでMoveToElementを使用していたが、どちらも働いている見ることができます
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;
}
。
XPathで要素を見つけると、これは期待どおりに機能します。
私は間違っていますか?おかげ
これは完全に機能しました。それはとてもシンプルだったと信じられない、ありがとう! – youyong