我正在为网页编写一个自动化测试用例。这是我的场景。我必须在 html 表单中单击并键入各种 Web 元素。但是,有时在文本字段上键入时,会出现一个 ajax 加载图像,模糊了我想要与之交互的所有元素。所以,我在点击下面的实际元素之前使用网络驱动程序等待,
WebdriverWait innerwait=new WebDriverWait(driver,30);
innerwait.until(ExpectedConditions.elementToBeClickable(By.xpath(fieldID)));
driver.findelement(By.xpath(fieldID)).click();
但是等待函数会返回元素,即使它被另一个图像模糊并且不可点击。但是 click() 抛出异常
Element is not clickable at point (586.5, 278).
Other element would receive the click: <div>Loading image</div>
我是否必须每次在与任何元素交互之前检查加载图像是否出现?.(我无法预测加载图像何时出现并使所有元素雾化。)有没有有效的方法来处理这个问题?目前我正在使用以下功能等待加载图像消失,
public void wait_for_ajax_loading() throws Exception
{
try{
Thread.sleep(2000);
if(selenium.isElementPresent("id=loadingPanel"))
while(selenium.isElementPresent("id=loadingPanel")&&selenium.isVisible("id=loadingPanel"))//wait till the loading screen disappears
{
Thread.sleep(2000);
System.out.println("Loading....");
}}
catch(Exception e){
Logger.logPrint("Exception in wait_for_ajax_loading() "+e);
Logger.failedReport(report, e);
driver.quit();
System.exit(0);
}
}
但是不知道具体什么时候调用上面的函数,在错误的时间调用会失败。是否有任何有效的方法来检查元素是否实际上是可点击的?还是存在加载图像?
谢谢..