自动化测试—web自动化—selenium初识

一,了解自动化和selenium

1,什么是自动化测试,为什么要做自动化测试

        自动化测试能够代替一部分的手工测试。自动化测试能够提高测试效率。

        随着版本的叠加,版本回归的压力也越来越大,通过人力测试回归版本是不现实的,因此需要借助自动化测试。

2,为什么选择selenium作为web自动化测试

        开源免费,支持多浏览器,支持多系统,支持多语言(java,python等),selenium包底层由很多可使用的API,

3,selenium环境变量

        selenium工具包,Chrome浏览器,ChromeDriver谷歌驱动,java8及以上

4,什么是驱动,驱动的工作原理

        驱动:通过一些操作,通过驱动程序完成某一种操作

        驱动的工作原理:

 二,下载安装selenium,创建工程,安装自动化测试包

<dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>4.0.0</version>
</dependency>

三,测试自动化测试

public class TestSelectOnBaidu {
    public void run() throws InterruptedException {
        //创建谷歌驱动,用来打开谷歌浏览器
        ChromeDriver driver = new ChromeDriver();
        Thread.sleep(2000);
        //输入访问的网址
        driver.get("https://www.baidu.com");
        Thread.sleep(2000);
        //找到搜索框,输入
        driver.findElement(By.cssSelector("#kw")).sendKeys("王力宏");
        Thread.sleep(2000);
        //找到搜索按钮,点击
        driver.findElement(By.cssSelector("#su")).click();
        Thread.sleep(2000);
        //关闭驱动
        driver.quit();
    }
}

四,定位元素的方法

1,

 css选择器

 

//css选择器
        String text = driver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).getText();
        System.out.println("新闻超连接的文本" + text);

xpath语法

层级:/次级,//跳级

属性:@

函数:contains() ,.....

path选择器

//xpath选择器
        driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("yyk");
        driver.findElement(By.xpath("//*[@id=\"su\"]")).click();

submit和click

使用submit 的方法都可以使用click,能使用click的地方不一定能使用submit。 

clear():清除对对象输入的文本。

gettext():获取文本

getAttribute():获取属性值

        System.out.println(driver.findElement(By.cssSelector("#su")).getAttribute("value"));

等待:

代码执行速度大于页面渲染的速度,所以在获取结果页面的一些元素文本属性时,会出现noSuchElementException,所以需要等待结果页面渲染完成。

等待分为显示等待,隐式等待,强制等待

强制等待:

优点:语法简单,适合调试使用,

缺点:浪费大量时间在等待上面,而使用自动化测试就是为了提高效率

driver.findElement(By.cssSelector("#kw")).sendKeys("ykz");
        driver.findElement(By.cssSelector("#su")).click();
        System.out.println(driver.findElement(By.cssSelector("#\\33  > div > div:nth-child(1) > h3 > a")).getText());

        //强制等待
        driver.findElement(By.cssSelector("#kw")).sendKeys("ykz");
        driver.findElement(By.cssSelector("#su")).click();
        Thread.sleep(2000);
        System.out.println(driver.findElement(By.cssSelector("#\\33  > div > div:nth-child(1) > h3 > a")).getText());

强制等待会等待一段时间后再获取结果页面的内容

隐式等待:

在规定的时间内,轮询等待元素出现后立即结束,如果规定时间内还没有出现,则会抛出一个No Such Element Exception异常

作用在driver的整个生命周期

//隐式等待
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
        //隐式等待作用再driver 的整个生命周期
        driver.findElement(By.cssSelector("#kw")).sendKeys("ykz");
        driver.findElement(By.cssSelector("#su")).click();
        System.out.println(driver.findElement(By.cssSelector("#\\33  > div > div:nth-child(1) > h3 > a")).getText());

隐式等待的缺点:需要等待所有的元素都展现才会执行下一步,存在时间上的浪费

隐式等待的优点:节省时间。

显示等待

 //显示等待
        //隐式等待作用再driver 的整个生命周期
        driver.findElement(By.cssSelector("#kw")).sendKeys("ykz");
        driver.findElement(By.cssSelector("#su")).click();
        WebDriverWait foo = new WebDriverWait(driver,Duration.ofSeconds(3));//WebDriverWait(),传入一个driver,和超时时间
        //until方法,一直查询需要等待的cssid是否存在,存在立即返回,不存在超时退出
        String text = foo.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#\\33  > div > div:nth-child(1) > h3 > a"))).getText();
        System.out.println(text);

优点:节省时间

缺点:写法复杂

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值