本文首发于51Testing,作者jessie_verson是 51Testing特邀嘉宾。以下来自 51Testing 整理的对话实录:
0 1 就目前Selenium只能做Web跟Android App方向的自动化是吗?像IOS App跟 Windows桌面应用的自动化就无法用Selenium实现对吗?答
selenium的创作团队很明确说了,他们只专注WEB测试. 你如果想测试APP,可以看一下这篇文章: http://www.51testing.com/html/21/n-4462121.html0 2Selenium的Web自动化,除了用Fire bug和Fire path 来获取页面元素进行定位,还有其他更好的方式吗?
答
Firebug和Firepath,基本上足够你去定位元素了,如果你对XPATH熟悉,Firebug一个就足够了。主要的定位方式:id,name,identifier,js,link,css如果这些都不行,那么用xpath几乎能百发百中的。
0 3DOM定位,Xpath等,项目中使用何种定位更加准确?
答
能用固定的属性,比如id,name(当然要唯一),tagname等的,尽量去用。没办法了再用XPATH,这样后期维护会省很多力气,减少因为程序员调皮改代码影响你的脚本。0 4 QTP跟Selenium中Selenium的优势有哪些(除了开源性跟价格以外)?答
QTP跟Selenium打起来的话,很难说谁会赢。开源和价格不谈以外,QTP有keyword view不会编程的照样做自动化,webdriver就会傻瞪眼,除非谁还把seleniumIDE挖出来玩玩。 另外,QTP很多功能都做了封装,留给用户的可能就填一个数据或者改个配置就能完成一项自动化测试,比如,QTP的参数化,简化到了你只需要填写excel表格就可以自动循环和调用,而webdriver,完成一个参数化绝不少于4页A4的代码。所以从易用性上来说,selenium估计是打不过QTP的。 但是,事情的转机往往就在价格上面了,QTP要加一个插件,或者定制个什么功能,代价不菲;selenium自然都是开源的。这一点,如果你不让我谈的话,我觉得真没啥好说了,还有比这个更能打动老板的心吗? 如果再要掰一点出来,QTP用了那么多年,会的人比较多,招人比较好招吧;webdriver对招人来说,要求就高很多很多了,要做过多年测试(会设计数据)+多年开发(会编写脚本)。0 5我做自动化6年了,最近发现selenium官网上说selenium支持Winium.Desktop, Winium.StoreApps,我的理解是现在selenium应该已经能支持手机端和桌面应用程序的测试了,只是目前功能还不算很强大。我使用了一下Winium.Desktop的对应功能的jar包,用selenium的driver调起本地的calc计算器实现简单的运算,我自己写了一点代码,但是最大的困难还是在于很难识别桌面应用程序的各个组件的元素(微软的小工具UISpy.exe不太好用,虽然也是通过name, id, xpath去定位元素),请问是否有好的工具或者其他办法,可以识别桌面应用程序中各组件元素呢?
答
我主要的经验都是WEB,C/S以及桌面应用确实测得很少,要测也是手工测试的。所以这个领域不太敢造次。这些年来,对于cs的测试,大部分网友还是推荐QTP。另外还有个工具不知道你用过没有TestComplete。据用过的网友说,还是不错的。
也许只能帮到你这里了~
0 6Selenium测试能与开发同步进行吗,请从多方面详细解答
5
可以的,而且是必须的。虽然界面不稳定,会给你的脚本带来很多维护量。但是一旦软件做好了,你发现有些东西不能识别到,想让开发给你加点属性,估计开发是不愿意的。
所以开发在做一些核心控件的时候,你完全可以用selenium先识别下,看下能不能识别到,不能识别到的,让开发帮下忙加点属性,这个时候,也不会影响他们工作太多。
对于一些完整的流程,大可到了界面稳定后再串起来。
0 7我是一个刚接触测试行业自动化测试的萌新,请问能怎样快速的上手selenium工具呢?
答
先选一个自己熟悉的selenium能支持的语言吧。然后找一些实例去看。自己动手再实践,做过几个实例就慢慢上手了
0 8selenium 类的 请问相关课程对于JS脚本对象验证,有没有详细的资料?
答
在讲selenium课程的时候,讲到一部分js的内容,主要是有的控件无法识别,采用JS的方式去识别。0 9QTP 类的 请问相关课程对于win平台下的COM对象讲解有多少?有没有全面详细的COM对象资料?
答
你指的COM对象是桌面应用或者C/S的吗?因为这个外面用得少,所以咋们这个QTP课程中没有这块,主讲web。这篇文章写的挺详细:
http://www.51testing.com/html/22/n-4462122.html
10Jmeter和LR 性能类的 请问在定位接口性能问题外,然后应该去学习分析定位哪些方面的性能问题?有没有途径或资料去学习去研究
答
这两个性能工具,无论哪个,做完测试后,都需要对性能指标进行一下分析,我在jmeter这个课程中,穿插了一些性能指标的分析内容,比如如何判断内存泄漏,CPU瓶颈,如何定位性能问题,性能调优需要注意的点响应时间图分析等等。 11最近在用selenium+java+testng写的页面自动化,遇到一个问题,用下面的方法实现模拟F12页面出现开发者工具的操作总是不生效,但是用例执行也不报错,就是预期结果没有出现(跟debug看的),我的脚本如下:
driver.get(https://www.baidu.com/);
driver.manage().window().maximize();
Actions builder = new Actions(driver);?
builder.sendKeys(Keys.F12).perform();
答
这个我笔记本是fn+F12的,不知道你是不是也是,所以单纯用action是驱动不起来的。所以我改用Robot了。package test;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class F12 {
public static WebDriver driver=null;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.setProperty("webdriver.chrome.driver","C:\\browserdriver\\chromedriver.exe");
driver=new ChromeDriver();
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
driver.quit();
}
@Test
public void test() throws InterruptedException, AWTException {
driver.get("https://www.baidu.com/");
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_F12);
robot.keyRelease(KeyEvent.VK_F12);
Thread.sleep(3000);
}
}
12什么是插件包测试,测试的对象是什么?
答
不知道你指的插件包有没有什么特殊性,我理解的插件包无非是安装好了插件后,某个软件中多了一个功能,然后做正常的功能测试即可,然后就是不要忘记测试,卸载了插件包后,软件有没有什么异常。 13编写测试用例时,如何进行思考。如,我现在工作的公司经常对app内部功能进行改版,我编写用例时,总会忽略一些重要的细节,但是事后会马上想起来。所以想问一下如何能够做的更好?
答
编写测试用例,就像我们写作文,一般都要先打个大纲稿,先把要写的东西提一下,再细化里面的细节。在测试用例里面,这个大纲就是测试需求,写的时候只要点到为止,并不需要怎么去测试的细节,这样就能把精力集中在思考要测试哪些东西上面。
比如,测试一个输入框,就要考虑要测哪些东西,正常的输入,异常的输入数据,用户易用性测试等等。等想完了要测试哪些点后,再逐一去思考每个点的测试步骤。
14数据驱动你们是怎么做的,用的是testng的dataprovider+xml/excel 吗? 如果是这样数据回写你们是怎么处理的呢?
答
我用的比较多的还是POI的那一套。数据还是写在excel里面的。这样后期维护比较方便。读取excel的代码可以这样写://读取excel文件
InputStream is = new FileInputStream(filesrc);
POIFSFileSystem fs = new POIFSFileSystem(is);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
if(sheet==null){
System.out.println("暂无数据,请输入测试数据");
}
//获取文件行数
int rows = sheet.getLastRowNum();
15 UI自动化做成什么样,才能使其他手工测试人员更容易上手,让不怎么懂代码的他们也能建议使用自动化?答
自动化测试,一般测试人员都比较犯憷,无非就是那些代码太长,不好理解,所以,有些公司就在QTP或者SELENIUM的基础上,做了封装,对外只留了一些数据输入的接口,这样普通的测试人员,只要把精力放在设计测试数据上就好了,然后再执行,中间的逻辑代码对他们都是黑盒。你上面第一个问题的数据驱动不就是一个典型,excel留给他们去设计就简单了。 16手工测试人员,想从功能向自动化提升,但是没有代码基础,应该怎么进步呢?先学语言还是先学工具?
答
你应该先选定一个你想使用的自动化的工具,很多自动化工具都有一些基本使用操作是不需要编程技能的,都是图形化的,你可以先从这个图形化的操作开始,熟悉了工具的机制后,再学习语言,进行深层次的编程。或者,我们大学里面多少都学过一些编程语言,这些是你熟悉的,你可以通过这个熟悉的语言去挑选工具。不过还是推荐看第一条。
附录:Selenium学习资料 小编精心整理了: ①Selenium自动化测试框架之PO设计模式 ②Selenium终极自动化测试环境搭建 ③Selenium经典教程—从入门到精通 ↓↓扫码领取附录内容↓↓ (备注: 资料 ,领取时间: 9月6日 截止!) 推荐阅读点击阅读☞看完中高级测试工程师面试题,面试更有底气了!
点击阅读☞如何在Selenium项目中使用GeckoDriver?
点击阅读☞分享我的第一次Selenium自动化测试框架开发过程
点击阅读☞Selenium+Python之下拉菜单的定位
点击阅读☞163邮箱自动登陆 Python + Selenium
戳 爱我请给我好看!