我使用Selenium进行Java测试。 我知道我可以检查元素是否启用或显示:
isDisplayed
isEnabled
在此元素位于另一个元素的情况下,是否可以检查元素是否不可见?例如,如果div在另一个下面。 有了我想检查GUI元素。例如,如果按钮在元素下移动等等......
有什么想法吗?
感谢帮助_
答案 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异常。作为异常消息的一部分,它还会返回您试图单击的点以及哪个其他元素(标签,类)确实拦截了单击。通过简单地尝试单击一个元素并专门捕获这种类型的异常,即可获得所需的信息,如果您捕获到这样的异常=>元素不可单击(在给定坐标下-在大多数情况下,默认单击点(或使用动作:您定义的偏移量)),如果没有异常=>元素是可点击的。