在做自动化测试过程中,多多少少会遇到了一些问题,以此记录一下:
1、对于input、button等,没有name、id时,通过xpath获取,F12找到该标签,右键复制xpath
2、对于页面有时iframe,需要的标签在iframe里,需要先进入iframe,才能获取该标签
driver.switchTo().frame(driver.findElement(By.xpath("自己iframe的路径")));
退出时iframe时:
driver.switchTo().defaultContent();
3、出现弹出框时,点击弹出框的确定按钮:
driver.switchTo().alert().accept();
点击取消按钮:
driver.switchTo().alert().dissmiss();
4、打开一个新的页面时,需要切换主页面到新打开的页面
protected void openNewWindow(String windowHandle) throws Exception {
Set<String> handles = driver.getWindowHandles();
for (String handle : handles) {
if (!windowHandle.equals(handle)) {
driver.switchTo().window(handle);
}
}
}
如果打开三个及以上页面时,有可能切换页面切换不到最新打开的(不一定会出现),用以下代码可以确保是定位到最新打开的页面
protected void openNewWindows() throws Exception {
Set<String> handles = driver.getWindowHandles();
List<String> it = new ArrayList<String>(handles);
if (it.size() > 0) {
driver.switchTo().window(it.get(it.size()-1));
}
}
5、ie下载文件时弹出ie的下载框,
private static void downLoad() throws Exception {
Thread.sleep(2000);
try {
Robot robot = null;
robot = new Robot();
robot.setAutoDelay(1000);
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_N);
robot.keyRelease(KeyEvent.VK_N);
robot.keyRelease(KeyEvent.VK_ALT);
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_DOWN);
robot.keyRelease(KeyEvent.VK_DOWN);
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_DOWN);
robot.keyRelease(KeyEvent.VK_DOWN);
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_DOWN);
robot.keyRelease(KeyEvent.VK_DOWN);
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
} catch (AWTException e) {
e.printStackTrace();
}
}
6、用edge进行自动化测试时,报错版本的问题,后来发现是因为驱动的原因,需要在官网下载与自己电脑edge相同版本的驱动才可以
edge驱动下载链接:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/