Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果使用FindBy注释,Selenium将检查元素是否存在_Selenium_Findby - Fatal编程技术网

如果使用FindBy注释,Selenium将检查元素是否存在

如果使用FindBy注释,Selenium将检查元素是否存在,selenium,findby,Selenium,Findby,尝试使用@FindBy注释我的感觉是没有完美的方法来检查元素的存在 也有类似的讨论或讨论,但我只看到解决办法,没有类似的解决办法 @FindBy (id = "abc") private WebElement TestElement; if (TestElement.isPresent) {...}; 我找到了使用@FindBys的解决方案,但这样我就必须为我要检查DOM中是否存在的每个元素实现额外的@FindBys?不太好 每个具有预期条件的备选解决方案。存在…或任何使用FindEleme

尝试使用
@FindBy
注释我的感觉是没有完美的方法来检查元素的存在

也有类似的讨论或讨论,但我只看到解决办法,没有类似的解决办法

@FindBy (id = "abc")
private WebElement TestElement;

if (TestElement.isPresent) {...};
我找到了使用
@FindBys
的解决方案,但这样我就必须为我要检查DOM中是否存在的每个元素实现额外的
@FindBys
?不太好

每个具有
预期条件的备选解决方案。存在…
或任何使用
FindElement
的解决方案都需要一个定位器作为参数,而不是WebElement,对吗

当然,我可以使用try/catch中的
ExpectedConditions.elementtobelickable(WebElement)
构建解决方案,并提出
org.junit.jupiter.api.Assertions.fail
,但这不是真正的DOM检查

对我来说,我似乎更灵活地使用页面对象的经典
By
定义(例如
private By searchInput=By.xpath(“\\input[@class='input\u search']”;
),而不是使用
@FindBy
)。使用@FindBy我总是处理WebElement本身,以前没有机会检查它的存在,对吗


使用
@FindBy
检查页面对象上下文中元素的DOM存在的最佳实践解决方案是什么?或者,为了安全起见,我应该继续使用
By

这可能不是最好的解决方案,但您可以使用findBy并返回一个列表:

List<WebElement> TestElement = driver.findElements(By.id(...));
List TestElement=driver.findElements(By.id(…);

每次(在while循环中)检查list元素的大小,看看它是否为空

我不知道为什么
预期条件。存在…
不起作用。您需要为正在检查的元素指定一个定位器。我知道我遗漏了一些东西,但问题还不清楚。当然,但对于这一点,我需要ID。我的问题是,我可以使用FindBy吗,因此没有ID或xpath作为定位器。没有任何定位器,你应该找到什么?。。主要问题是:在检查元素的存在性方面,我是否可以不使用定位器(FindBy声明中的定位器除外)并且不使用冗余代码。