gpt4 book ai didi

c# - Selenium - 具有透明代理的 MoveToElement()

转载 作者:行者123 更新时间:2023-11-30 15:22:17 26 4
gpt4 key购买 nike

我有元素

public ArticlePage()
{
PageFactory.InitElements(Browser.driver, this)
}

[FindsBy(How = How.Id, Using = "someId")]
private IWebElement btnTitleView { get; set; }

和行动

Actions action = new Actions(Browser.driver);
action.MoveToElement(btnTitleView).Perform();

但是当我尝试运行它时,我会得到错误

'System.Reflection.TargetException' Object does not match target type.

我试图通过 Browser.driver.FindElement(By.Id("someId")) 找到这个元素然后它工作正常。因此,它存在并显示。
是否可以使用透明代理来执行Actions?有没有其他方法可以执行 MoveToElement() 之类的透明代理操作?

最佳答案

为了打开使用透明代理的元素,您可以使用具有 WrappedElement 属性的 IWrapsElement 接口(interface):

action.MoveToElement(((IWrapsElement)btnTitleView).WrappedElement).Build().Perform();

您可能还希望将该转换包含为 IWebElement 对象的扩展方法:

public static class IWebElementExtensions
{
public static IWebElement Unwrap(this IWebElement element)
{
return ((IWrapsElement)element).WrappedElement;
}
}

那么您的操作代码可能如下所示:

Actions action = new Actions(Browser.driver);
action.MoveToElement(btnTitleView.Unwrap()).Build().Perform();

我希望这个答案能帮助您解决问题:)

关于c# - Selenium - 具有透明代理的 MoveToElement(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35936035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com