Selenium - 检查元素是否在另一个元素之下

时间:2016-03-14 14:30:06

标签: java selenium selenium-webdriver webdriver visibility

我使用Selenium进行Java测试。 我知道我可以检查元素是否启用或显示:

 isDisplayed
 isEnabled

在此元素位于另一个元素的情况下,是否可以检查元素是否不可见?例如,如果div在另一个下面。 有了我想检查GUI元素。例如,如果按钮在元素下移动等等......

有什么想法吗?

感谢帮助_

3 个答案:

答案 0 :(得分:1)

selenium.isElementPresent()selenium.isVisible()

那些可能对你有帮助。

isElementPresent() - 此方法基本上测试我们要查找的元素是否出现在页面的某个位置。

isVisible() - 查找display:none样式标记 - 如果我们不小心,这可能会抛出空指针...因此要查看元素是否可见首先检查元素是否存在使用isElementPresent()方法。然后尝试检查元素是否可见!

答案 1 :(得分:1)

我认为像这样构建你的定位器可能会这样做。

By TOP = By.xpath(".//div");
By UNDER = By.xpath("..//..//div");
By elementUNDERtheTOP = new ByChained(TOP, UNDER);

这是等同于:

driver.findElement(TOP).findElement(UNDER);

这可以用XPath做,但我不认为你可以用CSS定位器做到这一点,因为CSS定位器无法将DOM树遍历到父元素。

答案 2 :(得分:0)

让我们说您想单击一个元素,但是该元素在“后面” /“下面”(又被另一个元素“阻塞”),Selenium实际上会抛出ElementClickIntercepted异常。作为异常消息的一部分,它还会返回您试图单击的点以及哪个其他元素(标签,类)确实拦截了单击。通过简单地尝试单击一个元素并专门捕获这种类型的异常,即可获得所需的信息,如果您捕获到这样的异常=>元素不可单击(在给定坐标下-在大多数情况下,默认单击点(或使用动作:您定义的偏移量)),如果没有异常=>元素是可点击的。