使用findElement找到table中的某个元素ele后,执行点击:(new Actions(driver)).moveToElement(ele).click().perform(),但是页面没反应怎么办?
事实上,如果ele.isDisplayed()==true时不代表ele真的可见,ele有3种情况:完全可见、完全不可见 和 部分可见。
1. 完全可见
ele.click() 或 (new Actions(driver)).moveToElement(ele).click().perform() 就可以成功执行点击动作。
2. 完全不可见
ele.click() 似乎没效果
(new Actions(driver)).moveToElement(ele).click().perform() 可以成功执行点击动作,因为moveToElement可以滚动屏幕使得元素移到可见位置,但这个功能对部分可见的元素并不产生作用。
3. 部分可见
这种情况下,有可能是水平滚动条遮住了该元素。
ele.click() 和 (new Actions(driver)).moveToElement(ele).click().perform()两种方法都不能成功执行点击动作。
此时,应该先滚动窗口使它可见:
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].scrollIntoView(true);", ele);
然后执行:
ele.click()即可,当然执行(new Actions(driver)).moveToElement(ele).click().perform() 也可以。