提示:web自动化中经常会遇到一些难搞诡异的问题,本文中总结了一些自动化常常会遇到小问题
- 复选框被div层遮挡
错误描述
Other element would receive the click: <div class="el-loading-mask el-loading-fade-enter-active el-loading-fade-enter-to" style="">
解决办法
问题解决源链接:
转载:https://blog.csdn.net/fengqiaoxian/article/details/81104173
2.元素未被定位到
FAILED: ReScreen
测试新增初筛是否成功
org.openqa.selenium.TimeoutException: Expected condition failed: waiting for presence of element located by: By.xpath: //input[@id='leftEarDegreeDiv']/label[1] (tried for 10 second(s) with 500 MILLISECONDS interval)
at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:82)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:231)
at page.InitialHearingDiagnosis_PO.clickrightAcou(InitialHearingDiagnosis_PO.java:58)
at testCase.
隐试等待为失败,即10秒钟后未出现,就是元素未定位到,说明元素发生改变,当前方式已经不能定位
3.点击查询信息,出现数据跟预期不一致
搜索条件查询确认后,点击详情前,停止一秒,在点击详情,
- 获取页面元素的值时出现,页面元素先出现,数据加载慢后出现,导致取值为空
在等待页面元素出现后,强制等待1秒钟,等数据出现
4.时间控件填入时,为不可填写,只能为选择,自动需要强制把控件重置为可写
private static By birthday = By.xpath("//input[@name='baby.birthDay']/../input");
JavascriptExecutor removeAttribute = (JavascriptExecutor) my_dr;
WebElement ele = my_dr.findElement(birthday);
removeAttribute.executeScript("arguments[0].removeAttribute('readonly')", ele);
5.下拉菜单内容位置会变换,用jS强制点击
WebElement ele = myDriver.findElement(By.xpath("//span[contains(text(),'稠城街道')]"));
JavascriptExecutor executor = (JavascriptExecutor)myDriver;
executor.executeScript("arguments[0].click();", ele);
6.自动化定位vue-treeselect 控件
- 先点开vue-treeselect 控件
//选择接诊机构
Private static By org = By.xpath("//label[@for='receiveOrgName']/../div/div/div/div/div[2]/input");
wait.until(ExpectedConditions.presenceOfElementLocated(org));
my_dr.findElement(org).click();
- 获取查询vue-treeselect加载的内容
String aa=my_dr.findElement(org1).getAttribute("innerHTML");
- 根据加载的内容,查看vue-treeselect 加载的内容,点击对应树菜单
private static By org2=By.xpath("//label[contains(text(),'息烽县卫生和计划生育局')]/../../div");
private static By org3=By.xpath("//label[contains(text(),'息烽县中医医院')]"); my_dr.findElement(org2).click();
my_dr.findElement(org3).click();
完整代码
7.上传图片
由于上传图片,需要上传图片的绝对路径
1.获取绝对路径公共方法
//根据相对路径获取文件绝对路径
public String retunimg(String url){
String path=this.getClass().getClassLoader().getResource(url).getPath();
String filepth=path.substring(1);
System.out.println(path);
return filepth;
}
2.页面元素选择上传的信息
3.用例中调用上传信息
//上传图片
cmp.uploadImg1(my_dr, wait, pc.retunimg("img/report_1.png"));