这个版本是简易版,但足够。
最终效果
我们通过录制selenium脚本,编辑,提交到git库,由jenkins自动化编译出jar包,通过bat命令在任意一台pc端执行(默认开发人员提交代码后自动执行所有模块)。按功能模块,测试项目,生成测试报告。对测试不通过的模块:
最大化
driver.manage().window().maximize();
打开页面
driver.get("https://www.baidu.com");
定位元素
多个相同时,返回第一个,没有找到会抛异常NoSuchElementException
WebElement element = driver.findElement(*);
当返回多个时:
List<WebElement> elements = driver.findElements(*);
定位元素方式
<input class="input_class input_class2" type="text" name="user-name" id="user-id" />
通过id定位
WebElement element = driver.findElement(By.id("user-id"));
通过name定位
WebElement element = driver.findElement(By.name("user-name"));
通过className定位
WebElement element = driver.findElement(By.className("input_class.input_class2"));
注意多个class用小数点隔开,也可以使用cssSelector定位
WebElement element = driver.findElement(By.cssSelector("input"));
通过linkText定位,如:
WebElement element = driver.findElement(By.linkText("我是如何重构整个研发项目,促进自动化运维DevOps的落地?"));
意思就是链接内容定位,通过partialLinkText定位,模糊内容定位,和上相似:
WebElement element = driver.findElement(By.linkText("我是如何重构整个研发项目?"));
通过tagName定位:
WebElement element = driver.findElement(By.tagName("form"));
通过xpath定位:
WebElement element = driver.findElement(By.xpath("//input[@id='passwd-id']"));
这个最为复杂,最简单的版本是:
//标签类型[@属性名=属性值]
但也可以定位第几个:
//input[4]
其中[]中还可以增加逻辑and or表达式:
WebElement element = driver.findElement(By.xpath("//input[@type='text' and @name='user-name']"));
WebElement element = driver.findElement(By.xpath("//input[@type='text' or @name='user-name']"));
[]中也可以增加start-with、ends-with、contains,比如:
WebElement element = driver.findElement(By.xpath("//input[start-with(@id,'user-')]"));
WebElement element = driver.findElement(By.xpath("//input[ends-with(@id,'user-')]"));
WebElement element = driver.findElement(By.xpath("//input[contains(@id,'user-')]"));
还可以任意属性名:
WebElement element = driver.findElement(By.xpath("//input[@*='user-name']"));
更多xpath使用方法见 http://www.w3school.com.cn/xpath/index.asp,单击某个元素:
.click()
清空input:
.clear();
input中输入内容:
.sendKeys("掘金网");
如果是上传附件,可直接sendKeys路径:
.sendKeys("c:\shao.png");
得到input内容:
.getText();
下拉框
Select select = new Select(driver.findElement(By.id("frequency")));
select.selectByValue("1");
driver.findElement(By.id("validDays")).click();
select.selectByValue("a");
select.deselectAll();
select.deselectByValue("a");
select.deselectByVisibleText("");
select.getAllSelectedOptions();
select.getFirstSelectedOption();
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理