selenium:Web UI层面的自动化测试框架
配置selenium环境
1、selenium jar包的导入
2、浏览器驱动路径配置到PATH中
3、浏览器执行路径配置到PATH中
版本:
1.0 RC
2.0 WebDriver
3.0 去除RC,浏览器驱动官方支持,火狐的驱动与jar包分离
4.0 不久的将来
内容:
IDE浏览器插件,用于录制回放生成脚本
WebDriver
Grid多节点控制
打开浏览器:
WebDriver 浏览器对象=new 浏览器驱动类();
WebDriver driver = new FirefoxDriver();
打开网页:
浏览器对象.get(String URL)
driver.get(“https://www.baidu.com”);
关闭浏览器:
Thread.sleep(3000);
driver.quit();
如果没有配置环境变量,需要通过代码段指定路径:
System.setProperty(“webdriver.驱动名.driver”, “驱动路径”);
System.setProperty(“webdriver.gecko.driver”, “驱动路径”);
System.setProperty(“webdriver.gecko.driver”, “D:Drivergeckodriver.exe”);
System.setProperty(“webdriver.浏览器名.bin”, “浏览器路径”);
System.setProperty(“webdriver.firefox.bin”, “浏览器路径”);
System.setProperty(“webdriver.firefox.bin”, “C:Program FilesMozilla Firefoxfirefox.exe”);
selenium页面的元素获取方式
1:id:通过标签的id属性值查找元素对象
WebDriver driver = new FirefoxDriver();
driver.get(“https://cn.bing.com”);
driver.findElement(By.id(“sb_form_q”)).sendKeys(“然学科技”);
driver.findElement(By.id(“sb_form_go”)).click();
2: name:通过标签的name属性值查找元素对象
WebDriver driver = new FirefoxDriver();
driver.get(“https://cn.bing.com”);
driver.findElement(By.name(“q”)).sendKeys(“然学科技”);
driver.findElement(By.name(“go”)).click();
3:className:通过标签的class属性值查找元素对象
WebDriver driver = new FirefoxDriver();
driver.get(“https://cn.bing.com”);
driver.findElement(By.className(“b_searchbox”)).sendKeys(“然学科技”);
driver.findElement(By.className(“b_searchboxSubmit”)).click();
4:LinkText:通过超链接标签的文本值查找元素
WebDriver driver = new FirefoxDriver();
driver.get(“https://www.baidu.com”);
driver.findElement(By.linkText(“新闻”)).click();
5:partialLinkText:通过超链接标签部分文本值查找元素
WebDriver driver = new FirefoxDriver();
driver.get(“https://www.baidu.com”);
driver.findElement(By.partialLinkText(“hao”)).click();
6:cssSelector:通过标签的css选择器查找元素对象。
WebDriver driver = new FirefoxDriver();
driver.get(“https://www.baidu.com”);
driver.findElement(By.cssSelector(“#kw”)).sendKeys(“然学科技”);
driver.findElement(By.cssSelector(“#su”)).click();
7:tagName:通过标签名查找元素对象。
这个方法搜索到的元素通常不止一个,所有一般建议结合使用findElements方法 来使用。
WebDriver driver = new FirefoxDriver();
driver.get(“https://www.baidu.com”);
List elements = driver.findElements(By.tagName(“a”));
for (WebElement element : elements) {
System.out.println(element.getText());
}
8:xpath:通过标签的路径来查找元素对象
绝对路径:基本上不建议使用
相对路径://标签名(*)[顺位/@属性=’属性值’]/标签名
(//跟标签,*代表 任意标签)
WebDriver driver = new FirefoxDriver();
driver.get(“https://www.baidu.com”);
driver.findElement(By.xpath(“//*[@id=”kw”]”)).sendKeys(“2019研究生入学考试”);
driver.findElement(By.xpath(“//*[@id=”su”]”)).click();
案例1:使用selenium+junit测试bugzilla登录系统
import java.util.Arrays;
import java.util.Collection;import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;public class Bug_Login {
WebDriver driver; @BeforeEach
public void open() {
driver = new FirefoxDriver(); }
@AfterEach
public void close() {
driver.quit();
} @ParameterizedTest
@MethodSource("dp1")
public void BugzillaLogin(String uname, String pwd) {
driver.get("http://192.168.221.128/bugzilla/");
driver.findElement(By.linkText("Log In")).click();
driver.findElement(By.id("Bugzilla_login_top")).sendKeys(uname);
driver.findElement(By.id("Bugzilla_password_top")).sendKeys(pwd);
driver.findElement(By.id("log_in_top")).click();
String status = driver.findElement(By.xpath("/html/body/div[1]/table[1]/tbody/tr/td[1]/p")).getText();
System.out.println(status); switch (status) {
case "Bugzilla – Welcome to Bugzilla":
System.out.println(uname + ":管理员");
break;
case "Bugzilla – Main Page":
System.out.println(uname + "普通用户");
break;
case "Bugzilla – Account Disabled":
System.out.println(uname + "禁用用户");
break;
case "Bugzilla – Invalid Username Or Password":
System.out.println(uname + "账号或者密码错误"); break;
default:
System.out.println(uname + "其他用户"); }
}
public static Collection
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 【Vue】生命周期
生命周期概念
一、生命周期图示
二、生命周期
三、vm.$mount(el)文章目录 生命周期概念 一、生命周期图示 二、生命周期 1.beforeCreate(){} 2.created(){} 3.beforeMount(){} 4.mounted(){} 5.beforeUpdate(){} 6.updated(){} 7.be…