关于selenium处理文件上传button的问题

相信大家都遇到过这样的情况:进到一个页面,点击windows组件上传文件=》popup弹出=》选择文件=》回到原popup页面=》点击上传=》progress bar开始启动,需要等待progress bar消失=》上传成功
其中有很多点都是比较让人头疼的,比如文件上传的控制,判断元素的出现时间,progress bar的check处理等待,在此我仅总结一下几个关键点的方法,希望对初学者有所帮助:
1. 先说文件上传popup部分:
很多popup弹出来需要定位时,切换到该frame之后再进行操作,老生常谈,但是还是很多人在很多情况下忽略了,没办法,做测试就是要注意细节:
driver.switchTo().frame("IFrameNewImportFile");
//等待上传文件选择的元素相应的组件显示出来,
waitElementToPresent(driver,"//*[@id='ImportationCatalogueNewImportFileControl1_tmmFileXml']");

/*
在这里需要声明一下,相信不少人认为用implictwait隐形等待,但是就我实际经验来看,在处理popup时候,还是有一个waitElementToPresent方法来确保比较保险,毕竟上传文件本来就容易出问题。。。
*/
//上传特定位置的文件,方法还是很多教程的一样,用的还是sendKeys的方法,不过关键在元素定位
driver.findElement(By.xpath("//*[@id='ImportationCatalogueNewImportFileControl1_tmmFileXml']")).sendKeys("E:\\JAVA testing\\_Testfiles\\ABC.xml");
sleep(2000);
driver.findElement(By.xpath("//*[span='Import']")).click();
2. 接下来就是处理progress bar的过程了:
for(int second=3000;;second++)
{

if (second >= 4000)
System.out.println("timeout : " + second);
else
{
driver.switchTo().defaultContent();
driver.switchTo().frame("IFrameImportationProgress");
sleep(second);
if (driver.findElement(By.xpath("//*[@class='progressBarArea']/span")).isDisplayed())
{
System.out.println(second+":"+"Under importing now");
continue;
}
else
{
driver.switchTo().defaultContent();
break;
}
}
}
和大家想的一样,我第一反应肯定还是用for循环处理,只不过中间要加上不同的嵌套if
判断语句来处理各种情形:1.Timeout 2. 如果progressbar还显示的话,需要跳出循环继续判断 3.如果progress bar不显示了,那么跳出循环,switch到默认content,以便接下来的操作。
关于上传文件的方法还有很多,以后有机会再谈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值