检查页面对象中定义的WebElement

时间:2016-06-09 14:29:51

标签: selenium

我的第一个问题。我希望这个问题尚未得到解答。我之前搜索过它是否存在,对不起,如果我错了。

我的问题是下一个问题。我在PageObject类中有这个webelement用于自动化测试:

//Customer filter
@FindBy(id = "customer_filter")
private WebElement customerFilter;

稍后我会尝试检查它是否存在,如下:

Boolean test = customerFilter.isDisplayed();

但是它不起作用,它表示当实际不存在时,webelement不存在,并且测试结束。我也尝试过使用isEnabled()和isSelected()。我必须使用下一个代码,以便一切正常:

Boolean isPresent = driver.findElements(By.id("customer_filter")).size() > 0;
    if(isPresent){

有没有办法直接使用webelement所以我不必连续使用id定位器?

提前致谢!!!

编辑:寻找更多信息,我发现这个帖子有同样的问题,但没有解决:https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/1880

2 个答案:

答案 0 :(得分:0)

请参阅此帖:post

另外请记住,当您检查if .size()>0时,这与可见元素或已呈现元素无关。此集合包含DOM中与条件匹配的所有元素。

我的建议是创建一个方法,每次使用参数调用您正在寻找的元素。

答案 1 :(得分:0)

使用" @ FindBy"注释,它返回一个WebElement代理。 WebElementProxy是webelement的包装器,并且有一个" UnderlyingWebElement"财产,这是你正在寻找的。

https://github.com/barancev/webdriver-samples/blob/master/src/ru/st/selenium/WebElementProxy.java#L141

如何利用这一点,您是否可以进行一些创造性类型转换来访问IWebElement界面中没有的一些方法。

if( ((WebElementProxy)customerFilter).getWrappedElement() != null) { 
  //do something
}