当前位置:   article > 正文

自动化测试—web自动化—selenium初识_selenium在自动化测试中有什么作用

selenium在自动化测试中有什么作用

一,了解自动化和selenium

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

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

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

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

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

3,selenium环境变量

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

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

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

        驱动的工作原理:

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

  1. <dependency>
  2. <groupId>org.seleniumhq.selenium</groupId>
  3. <artifactId>selenium-java</artifactId>
  4. <version>4.0.0</version>
  5. </dependency>

三,测试自动化测试

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

四,定位元素的方法

1,

 css选择器

 

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

xpath语法

层级:/次级,//跳级

属性:@

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

path选择器

  1. //xpath选择器
  2. driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("yyk");
  3. 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,所以需要等待结果页面渲染完成。

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

强制等待:

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

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

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

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

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

隐式等待:

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

作用在driver的整个生命周期

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

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

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

显示等待

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

优点:节省时间

缺点:写法复杂

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/999468
推荐阅读
相关标签
  

闽ICP备14008679号