selenium小结

本文主要介绍了Selenium作为Web应用程序测试工具的用途、功能特性、局限性,详细讲解了Selenium IDE、WebDriver的使用,包括常见命令、元素定位、等待策略以及下拉框操作,并提到了鼠标操作。通过Selenium,可以实现自动化测试,提高测试效率,解决回归测试、压力测试和兼容性测试等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、自动化测试:将人为的测试行为转化为机器执行的过程。

2、为什么要进行自动化测试:解决回归测试;解决压力测试;解决兼容性测试;提高测试效率,保证产品质量。

3、selenium简介:selenium是一个用于Web应用程序测试的工具。

4、selenium功能特性:selenium是一个开源和可移植的Web测试框架;selenium IDE为创作测试提供了回放和录制功能;selenium支持各种操作系统,浏览器和编程语言。

5、selenium局限性:selenium不支持桌面应用程序的自动化测试;无法使用selenium对Web服务执行自动化测试;无法对图像执行测试。selenium没有任何内置的报告功能,必须依赖JUnit和TestNG等插件来获取测试报告。

6、selenium IDE简介:是Selenium Suite下开源的Web自动化测试工具。

7、第一个测试

 执行:

 解决报错:

8、Selenium WebDriver简介:提供了各种语言环境的API来支持编写符合标准软件开发实践的应用程序,支持Java、Python等编程语言进行自动化测试脚本编写。

9、Selenium WebDriver常用命令

1.获取网页:get()方法和navigate()方法。

driver.get("www.baidu.com");

driver.navigate().to("www.baidu.com");

2.查找表单并发送用户输入:fd.findElement(By.id("kw")).sendKeys("京东");

3.清除用户输入:clear()方法。

driver.findElement(By.name("wd")).clear();

4.使用getText()方法来获取通过任何web元素写入的数据。

fd.findElement(By.id("kw")).getText();

5.click()方法方法用于对任何Web元素执行单击操作。

fd.findElement(By.linkText("新闻")).click();

6.在浏览器历史记录中向后导航:driver.navigate().back();

7.在浏览器历史中记录中向前导航:driver.navigate().forward();

8.刷新/重新加载页面:driver.navigate().refresh();

9.关闭浏览器:driver.close();

10.关闭浏览器和与驱动程序关联的其他所有窗口:driver.quit();

11.在 Windows 之间移动:driver.switchTo().window("windowName");

12.在 frame 之间移动:driver.switchTo().frame("frameName");

10、基本元素定位

根据 id 来获取元素,id值是唯一的;

根据元素 name 属性获取元素;

根据元素的标签名(tagName)来获取元素;

根据元素的样式class值(className)来获取元素;

根据超链接的文本值(linkText)来获取元素;

根据超链接的部分文本值(partialLinkText)啦获取元素;

根据xpath定位:是一个path(路径),相当于元素的坐标;

private static FirefoxDriver fd;

public static void main(String[] args) {
    openFireFox();
    //id定位
    //fd.findElement(By.id("kw")).sendKeys("京东");

    //name定位
    //fd.findElement(By.name("wd")).sendKeys("京东");

    //tagName定位
    //fd.findElement(By.tagName("input")).sendKeys("京东");

    //className定位
    //fd.findElement(By.className("s_ipt")).sendKeys("京东");
    //复合类名的问题
    //fd.findElement(By.className("s_btn")).click();

    //LinkText定位
    //fd.findElement(By.linkText("新闻")).click();

    //partialLinkText定位
    //fd.findElement(By.partialLinkText("新")).click();

    //cssSelector元素定位
    //(1) tagName定位
    //fd.findElement(By.cssSelector("input"));
    //(2) id定位
    //fd.findElement(By.cssSelector("#kw")).sendKeys("京东");
    //(3) className定位
    //fd.findElement(By.cssSelector(".s_ipt")).sendKeys("京东");
    //fd.findElement(By.cssSelector(".bg .s_btn")).click();

    //xpath定位
    //fd.findElement(By.xpath("//*[@id='kw' and @name='wd']")).sendKeys("京东");//多属性定位
    //fd.findElement(By.xpath("//a[text()='新闻']")).click();//全部文本定位
    //fd.findElement(By.xpath("//a[contains(text(),'hao')]")).click();//全部或部分文本

}

public static void openFireFox() {
    System.setProperty("webdriver.firefox.bin", "E:\\Mozilla Firefox\\firefox.exe");
    System.setProperty("webdriver.gecko.driver", "E:\\selenium\\geckodriver\\geckodriver.exe");
    //1、打开firefox浏览器
    fd = new FirefoxDriver();
    //2、访问百度
    fd.get("https://www.baidu.com");
}

11、隐式等待和显式等待

1.隐式等待:在设置的超时时间范围内不断查找元素,直到找到元素或超时。

2.显式等待:用来等待某个条件发生后在继续执行后续代码。

private static FirefoxDriver fd;

public static void main(String[] args) throws InterruptedException {
    openFireFox();
    //隐式等待
    //fd.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    fd.get("http://www.baidu.com");
    fd.findElement(By.id("kw")).sendKeys("京东");
    fd.findElement(By.id("su")).click();
    //显式等待
    WebDriverWait wd = new WebDriverWait(fd, 5);
    wd.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[text()='官方']")));
    fd.findElement(By.xpath("//a[text()='官方']")).click();
}

public static void openFireFox() {
    System.setProperty("webdriver.firefox.bin", "E:\\Mozilla Firefox\\firefox.exe");
    System.setProperty("webdriver.gecko.driver", "E:\\selenium\\geckodriver\\geckodriver.exe");
    fd = new FirefoxDriver();
}

12、select下拉框

如果网页是一个下拉框,将web元素封装为Select对象。

select.getOptions()  获取所有选项。

select.selectByIndex()  根据索引选中对应的元素。

select.selectByValue()  选择指定value值对应的选项。

select.selectByVisibleText()  选中文本值对应的选项。

private static FirefoxDriver fd;

public static void main(String[] args) throws InterruptedException {
    openFireFox();
    fd.get("http://www.baidu.com");
    fd.findElement(By.id("s-usersetting-top")).click();
    fd.findElement(By.xpath("//a[text()='高级搜索']")).click();
    Thread.sleep(2000);
    WebElement we = fd.findElement(By.className("c-select-arrow-up"));
    Select select = new Select(we);
    select.deselectByIndex(1);
    Thread.sleep(2000);
    select.selectByVisibleText("最近一月");
}

public static void openFireFox() {
    System.setProperty("webdriver.firefox.bin", "E:\\Mozilla Firefox\\firefox.exe");
    System.setProperty("webdriver.gecko.driver", "E:\\selenium\\geckodriver\\geckodriver.exe");
    fd = new FirefoxDriver();
}

13、鼠标操作

通过Actions对象可以发起鼠标左键、右键等操作,最后使用perform方法执行操作。

private static FirefoxDriver fd;

public static void main(String[] args) throws InterruptedException {
    openFireFox();
    //鼠标操作
    fd.get("http://www.treejs.cn/v3/demo/cn/exedit/drag.html");
    WebElement sourceElement = fd.findElement(By.id("treeDemo_2_span"));
    WebElement targetElement = fd.findElement(By.id("treeDemo_3_span"));
    Actions actions = new Actions(fd);
    actions.clickAndHold(sourceElement).moveToElement(targetElement).release().build().perform();
}

public static void openFireFox() {
    System.setProperty("webdriver.firefox.bin", "E:\\Mozilla Firefox\\firefox.exe");
    System.setProperty("webdriver.gecko.driver", "E:\\selenium\\geckodriver\\geckodriver.exe");
    fd = new FirefoxDriver();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值