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


    一,了解自动化和selenium

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

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

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

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

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

    3,selenium环境变量

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

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

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

            驱动的工作原理:

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

    1. <dependency>
    2. <groupId>org.seleniumhq.seleniumgroupId>
    3. <artifactId>selenium-javaartifactId>
    4. <version>4.0.0version>
    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);

    优点:节省时间

    缺点:写法复杂

  • 相关阅读:
    大功率PID控温
    TCP协议的相关特性
    【Linux】第四站:Linux基本指令(三)
    JavaScript:实现AvlTree树算法(附完整源码)
    面试:常用的设计模式总结
    Maven
    【教程】微信推文怎么添加附件文档 (如word文档、excel表格、pdf文件)
    力扣每日一题:754. 到达终点数字【数学题】
    微服务与SpringCloud
    Tekla查询零件
  • 原文地址:https://blog.csdn.net/qq_52655865/article/details/125973326