当我像这样声明我的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
ChromDriver版本是2.19
答案 0 :(得分:0)
关于第一个问题:您在调试器中看到的实际上只是一个代理对象。 PageFactory
使用代理初始化您的_buyNowButton
,只有在脚本中的某个位置使用代理才能解析代理。因此,除非您实际使用它,否则您将不会在调试器中看到任何属性,例如Displayed
或Enabled
。
关于你的第二个问题:我现在无法使用Selenium 3和最新的ChromeDriver重新创建它,但它可能是当天的一个错误。