【问题标题】:Why I can't perform mouse move using Selenium WebDriver for C# and PageFactory in initialization为什么我不能在初始化中使用 Selenium WebDriver for C# 和 PageFactory 执行鼠标移动
【发布时间】:2012-04-11 23:21:52
【问题描述】:

我有一个 HTML 链接,我使用页面对象模式来编写带有 Selenium 的脚本。但是当使用 pageFactory 初始化对象时,我无法执行 MouseMove 操作。 所以,我有这样的课:

class BingPage
{
private readonly IWebDriver driver;
public static readonly String BASE_URL = "http://bing.com/";
[FindsBy(How = How.XPath, Using = ".//*[@id='scpt2']/a[text()='Shopping']")]
private IWebElement ShoopingLink;

public BingPage(IWebDriver driver)
{
    this.driver = driver;
    //Page Factory will use Driver to init searchButton and queryEdit objects
    PageFactory.InitElements(driver, this);
}

public void HoverShoppingLink()
{
    Actions builder = new Actions(driver);

    IWebElement elem = driver.FindElement(By.XPath(".//*[@id='scpt2']/a[text()='Shopping']"));
    builder.MoveToElement(elem).Build().Perform();//This will work

    builder.MoveToElement(ShoopingLink).Build().Perform(); //This will fail
}
}

标有注释“这将失败”的行将抛出异常“必须为移动操作提供位置。参数名称:actionTarget”

但是当我手动查找元素时 - 它可以工作。 谁能告诉我为什么?

.Net 是 selenium 2.0,带 IE 驱动的 .Net 4.0。

【问题讨论】:

    标签: c# selenium webdriver


    【解决方案1】:

    因为为元素创建的代理对象 (ProxiedWebElementInterceptor) 不代理 ILocatable,这是 Actions 类对其方法的要求。这是 .NET 绑定中的一个错误。它已在当前源中修复,并将在即将推出的下一个公开版本 (2.21) 中提供。

    【讨论】:

    • 在 2.48.2 版本中再次重现。现在的错误是对象与目标类型不匹配
    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2013-10-17
    • 2013-06-22
    相关资源
    最近更新 更多