IWebElement 在使用 PageFactory 初始化时没有属性



当我像这样声明我的IWebElement时:

[FindsBy(How = How.CssSelector, Using = "input#raffle_submit")]
private IWebElement _buyNowButton;

并在类构造函数中使用PageFactory初始化它:

PageFactory.InitElements(Driver, this);

然后,当我在任何方法中设置断点以查看元素的属性时,我在该元素中看不到任何属性:

public CartObj ClickBuyNowButton()
{
     _buyNowButton.Click(); //here is my break point
}

我看到的唯一属性是:- Non-Public members: http://prntscr.com/8k90r4

那么,所有必须在IWebElement中的属性,如"启用","显示"等都在哪里?

更多的说:我没有使用这个元素的任何问题,我可以点击它,我可以发送密钥给它,但当我使用下一个JavaScript代码它告诉我,参数是错误的(但它之前工作得很好):

((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView();", webElement);

执行以上JS代码后出现的错误:

 Additional information: Argument is of an illegal 
    typeOpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement

我确定它与WebDriver版本有关。

所以我当前的WebDriver版本是2.47.0

<<p> ChromDriver版本/strong> 2.19

回答您的第一个问题:您在调试器中看到的实际上只是一个代理对象PageFactory用代理初始化_buyNowButton,该代理只有在脚本中使用它时才会被解析。因此,除非您实际使用它,否则您不会在调试器中看到任何像DisplayedEnabled这样的属性。

关于你的第二个问题:我现在不能用Selenium 3和最新的ChromeDriver重新创建,但它可能是一个错误回到一天。

最新更新