我的第一个问题。我希望这个问题尚未得到解答。我之前搜索过它是否存在,对不起,如果我错了。
我的问题是下一个问题。我在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
答案 0 :(得分:0)
请参阅此帖:post
另外请记住,当您检查if .size()>0
时,这与可见元素或已呈现元素无关。此集合包含DOM中与条件匹配的所有元素。
我的建议是创建一个方法,每次使用参数调用您正在寻找的元素。
答案 1 :(得分:0)
使用" @ FindBy"注释,它返回一个WebElement代理。 WebElementProxy是webelement的包装器,并且有一个" UnderlyingWebElement"财产,这是你正在寻找的。 p>
如何利用这一点,您是否可以进行一些创造性类型转换来访问IWebElement界面中没有的一些方法。
if( ((WebElementProxy)customerFilter).getWrappedElement() != null) {
//do something
}