软件测试(Selenium自动化测试框架)(四)

  • 语法:
    • id选择器:#id
      在这里插入图片描述
      在这里插入图片描述
    • 类选择器:.class
      在这里插入图片描述
      在这里插入图片描述
    • 标签选择器: 标签名
    • 后代选择器:父级选择器,子级选择器

XPath定位
在这里插入图片描述

5. 操作测试对象

主要操作:

  • click()点击测试对象
  • sendkeys()在对象上模拟按键输入
  • clear()清除对象输入的文本内容
  • submit()提交
  • submit()获取元素的文本信息
  • getAttribute()获取属性值
  • click:点击测试对象
    在这里插入图片描述
  • 在对象上模拟按键输入: sendkeys()
    在这里插入图片描述

小练习:
搜索到的内容如果都包含"软件测试"则通过,否则不通过.
在这里插入图片描述

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.util.List;

import static java.lang.Thread.sleep;

public class Main {
   public static void main(String[] args) throws InterruptedException {
       ChromeOptions options = new ChromeOptions();
       options.addArguments("--remote-allow-origins=\*");
       WebDriver webDriver = new ChromeDriver(options);
      // 打开百度首页
       webDriver.get("https://www.baidu.com");
       // 找到百度输入框
       // CSS
       // webDriver.findElement(By.cssSelector('.bg s\_ipt\_wr new-pmd quickdelete-wrap'));
       // XPath
       WebElement element = webDriver.findElement(By.xpath("//\*[@id=\"kw\"]"));
       // 输入软件测试
       element.sendKeys("软件测试");

       // 找到“百度一下”按钮
       // 点击
       webDriver.findElement(By.cssSelector("#su")).click();
       sleep(3000);
       // 校验
       // 找到搜索结果
       List<WebElement> elements = webDriver.findElements(By.cssSelector("a em"));
       for (int i = 0; i < elements.size(); i++) {
           System.out.println(elements.get(i).getText());
           // 如果返回的结果都有软件测试,则证明测试通过,否则不通过
           if (!elements.equals("软件测试")) {
               System.out.println("测试不通过");
           }else {
               System.out.println("测试不通过");
           }
       }
   }
}


在这里插入图片描述

  • clear:清除对象输入的文本内容
public static void test3() throws InterruptedException {
       ChromeOptions options = new ChromeOptions();
       options.addArguments("--remote-allow-origins=\*");
       WebDriver webDriver = new ChromeDriver(options);
       webDriver.get("https://www.baidu.com");
       // 找到输入框,输入内容
       webDriver.findElement(By.cssSelector("#kw")).sendKeys("内容");
       // 点击搜索
       webDriver.findElement(By.cssSelector("#su")).click();
       sleep(3000);
       //清空输入框
       webDriver.findElement(By.cssSelector("#kw")).clear();
   }

  • submit:提交
    • 如果点击的元素放在form标签中,此时使用submit实现的效果和click是一样的,
    • 如果点击的元素放在非form标签中,此时使用submit报错。

示例:
在这里插入图片描述

public static void test4() {
       ChromeOptions options = new ChromeOptions();
       options.addArguments("--remote-allow-origins=\*");
       WebDriver webDriver = new ChromeDriver(options);
       webDriver.get("https://www.baidu.com");
       webDriver.findElement(By.xpath("//\*[@id=\"s-top-left\"]/a[1]")).submit();

   }

在这里插入图片描述

  • text:用于获取元素的文本信息
    在这里插入图片描述
  • getAttribute():获取属性值

示例 :在这里插入图片描述

public static void test5() {
       ChromeOptions options = new ChromeOptions();
       options.addArguments("--remote-allow-origins=\*");
       WebDriver webDriver = new ChromeDriver(options);
       webDriver.get("https://www.baidu.com");

       String butten_value = webDriver.findElement(By.cssSelector("#su")).getAttribute("value");
       
       // WebElement element = webDriver.findElement(By.cssSelector("#su"));
       // String butten\_value = element.getAttribute("value");

       System.out.println(butten_value);
   }

在这里插入图片描述

6. 添加等待

如果等待3天时间,强制等待会一直等待,等待三天时间。
隐式等待最长等待三天时间,如果在三天时间内某个时间点获取到页面上的元素,此时执行下面代码,如果等待三天时间还是没有找到这个元素,此时报错.

  • sleep休眠 :
    在这里插入图片描述
    • 隐式等待
      通过添加implicitlyWait() 实现. 隐式等待并非一个固定的等待时间,当脚本执行到某个元素定位是,如果元素开一个定位则继续执行, 如果元素定位不到, 则它以轮询的方式不断的判断元素是否被定位到, 直到超出设置的时长.
      在这里插入图片描述

7. 打印信息

  • 打印title
    在这里插入图片描述
  • 打印url
    在这里插入图片描述

8. 浏览器的操作

  1. 浏览器前进
  2. 浏览器后退
  3. 浏览器刷新

在这里插入图片描述

public static void test7() throws InterruptedException {
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=\*");
        WebDriver webDriver = new ChromeDriver(options);
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("319");
        webDriver.findElement(By.cssSelector("#su")).click();
        // 浏览器后退
        webDriver.navigate().back();
        sleep(3000);
        // 浏览器刷新
        webDriver.navigate().refresh();
        sleep(3000);
        // 浏览器前进
        webDriver.navigate().forward();
        sleep(3000);
    }

  1. 浏览器滚动条操作
public static void test7() throws InterruptedException {
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=\*");
        WebDriver webDriver = new ChromeDriver(options);
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("319");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        // 将webDriver强制转换JavascriptExecutor类型,执行JS代码
        ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");
        // 窗口最大化
        webDriver.manage().window().maximize();
        sleep(3000);
        // 全屏展示
        webDriver.manage().window().fullscreen();
        sleep(3000);
        // 设置窗口大小
        webDriver.manage().window().setSize(new Dimension(800, 1000));
    }

9. 键盘操作

  • 通过send_keys()调用按键:
    • send_keys(Keys.TAB) # TAB
    • send_keys(Keys.ENTER) # 回车
    • send_keys(Keys.SPACE) #空格键
    • send_keys(Keys.ESCAPE) #回退键(Esc)
  • 键盘组合键用法
    • send_keys(Keys.CONTROL,‘a’) #全选(Ctrl+A)
    • send_keys(Keys.CONTROL,‘c’) #复制(Ctrl+C)
    • send_keys(Keys.CONTROL,‘x’) #剪贴(Ctrl+X)
    • send_keys(Keys.CONTROL,‘v’) #粘贴(Ctrl+V)

示例:

public static void test8() throws InterruptedException {
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=\*");
        WebDriver webDriver = new ChromeDriver(options);
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("123");
        sleep(2000);
        // CRL + A
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL, "a");
        sleep(2000);
        // CRL + X
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL, "x");
        sleep(2000);
        // CRL + V
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL, "v");

    }

10. 鼠标操作

  • contextclick() 右击
  • doubleclick() 双击
  • draganddrop() 拖动
  • movetoelement() 移动

示例 :

public static void test9() throws InterruptedException {
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=\*");
        WebDriver webDriver = new ChromeDriver(options);
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("selenium");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        // 找到图片按钮
        WebElement webElement = webDriver.findElement(By.cssSelector("#s\_tab > div > a.s-tab-item.s-tab-item\_1CwH-.s-tab-pic\_p4Uej.s-tab-pic"));
        // 鼠标右击
        Actions actions = new Actions(webDriver);
        sleep(1000);
        actions.contextClick(webElement).perform();
        sleep(1000);

    }

在这里插入图片描述

11. 定位一组元素

  1. 复选框

在这里插入图片描述

 public static void test10() {
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=\*");
        WebDriver webDriver = new ChromeDriver(options);
        webDriver.get("xxxxxxxxxxxxxxxxxxxxxxxxxx");
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.DAYS);
        List<WebElement> webElements = webDriver.findElements(By.cssSelector("input"));
        for (int i = 0;i < webElements.size(); i++) {
            // 如果每个元素type值等于checkbox进行点击
            // getAttribute("type") 获取元素的type属性值
            if (webElements.get(i).getAttribute("type").equals("checkbox")) {
                webElements.clear();
            }else {

            }
        }
    }

  1. 多层框架定位
  • 定位到: frame --> inner —> click按钮
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
  1. 定位下拉框中的选项
    在这里插入图片描述
    在这里插入图片描述
  • 按索引定位:
    在这里插入图片描述
  • 按属性值定位
    在这里插入图片描述
  1. 定位弹窗
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  1. 上传文件
    在这里插入图片描述
    传入本地文件所在路径
    在这里插入图片描述

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

mg_convert/46506ae54be168b93cf63939786134ca.png)

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值