自动化测试

一、编写第一个自动化测试脚本

public class FirstTest {
    public static void main(String[] args) {
//
        System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");

//        配置chrome的执行文件的位置
        ChromeOptions options = new ChromeOptions();
        options.setBinary("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe");
//        1、打开浏览器
        ChromeDriver chromeDriver = new ChromeDriver(options);

//        2、访问百度
        chromeDriver.get("https:www.baidu.com");
    }
}

二、定位元素

  1. By.id()

    //      根据id定位到百度的输入框,并输入关键字"腾讯课堂"
            chromeDriver.findElement(By.id("kw")).sendKeys("腾讯课堂");

  2. By.name() 根据标签的name属性定位

  3. By.tagName() 根据标签来定位

  4. By.className()根据标签的class属性来定位

  5. By.linkText() 根据超链接的文本定位

  6. By.partialLinkText() 根据超链接的模糊文本定位

  7. By.cssSelector() css样式选择器定位元素

    • cssSelector的精确定位:By.cssSelector(" 标签名[属性='属性值'] ") 可以接多个属性

  8. xpath相对定位:只要不是/开始的就是相对路径 //*[@name=‘phone’]

    • // 匹配指定节点,不考虑位置(/ 则表示绝对路径,从根节点开始)

    • *通配符 ,匹配任意元素节点。

    • @选取属性

    • [] 属性判断条件表达式

      ↓ ↓ ↓ ↓ ↓ ↓ ↓

    1. 根据标签名+属性+属性值精准定位元素 //input[@name='ie' and @value='utf-8']

      • 每个属性前面都需要加上@符号

    2. text() 根据超链接的文本值精准定位 //a[text()='百度首页']

    3. contains(text(),'文本')根据超链接的文本模糊定位 //a[contains(text(),'百度')]


 

三、常用API

该类API都是在new ChromeDriver()类中的方法。

  1. click() 触发点击事件

    chromeDriver.findElement(By.className("s_btn")).click();
  2. clear() 清除文本内容

    chromeDriver.findElement(By.id("kw")).clear();
  3. getTagName()获取元素的标签名

  4. getAttribute(属性)根据属性名获取元素属性值

  5. getText() 获取当前元素的文本

  6. isDisplayed() 查看元素是否显示

  7. get(String url) 访问指定的url页面

  8. getCurrentUrl() 获取当前页面的url地址

  9. getTitle() 获取当前页面的标题

  10. getPageSource() 获取当前页面的源代码

  11. quit() 关闭驱动对象以及所有相关窗口

  12. close() 关闭当前窗口

  13. getWindowHandle()返回当前页的句柄

  14. getWindowHandles() 获取当前打开窗口的所有句柄

  15. manage()获取Options-----浏览器菜单操作对象

    1. 该对象是Options类型

      WebDriver.Options options = chromeDriver.manage();
      1. window().fullscreen()可以将当前窗口全屏

      2. Dimension size = options.window().getSize(); 获取浏览器宽高

        System.out.println("浏览器高度 = " + size.height);
        System.out.println("浏览器宽度 = " + size.width);
  16. navigate() 获取navigate对象


 

四、等待

1、硬性等待

直接使用线程休眠的方法---sleep()

2、隐式等待(全局有效):在chromeDriver实例化完成之后设置,此等待全局有效。

chromeDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

3、显示等待(局部有效):先实例化出webDriverWait(chromeDriver,timeOut) 这里超时时间单位为秒(s)

WebDriverWait webDriverWait = new WebDriverWait(chromeDriver,5);
// 当超链接显示,并且用户可见
webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[text()='_职业培训、考试提升在线教育平台']")));

 

五、特殊元素操作

1、alert弹窗

  • accept()接收确认弹窗

  • dismiss()取消弹窗

  • getText()获取弹窗的文本

// 		定位到弹出弹窗的按钮并点击
chromeDriver.findElement(By.xpath("//*[@id=\"abtn\"]")).click();
        Thread.sleep(3000);
//        找到对应的弹窗
        Alert alert = chromeDriver.switchTo().alert();
//        获取弹窗文本
        System.out.println("弹窗:" + alert.getText());
//        接收
        alert.accept();
//        取消
        alert.dismiss();

 

 2、confirm弹窗

  • accept()确认

  • dismiss()取消

  • getText()获取弹窗的文本

chromeDriver.findElement(By.id("abtn")).click();
        Thread.sleep(3000);
// 获取到弹窗对象Alert
        Alert alert = chromeDriver.switchTo().alert();
// 使用alert的方法getText()获取到弹窗的文本
        System.out.println("确认模态框:"+alert.getText());
// 取消
        alert.dismiss();
// 确认
        alert.accept();

 

3、iframe内嵌窗口

  • frame(iframe的id)根据iframeid获取切换窗口

// 根据iframe的id切换窗口至id为aframe
        chromeDriver.switchTo().frame("aframe"); 

 

 4、window切换窗口

  • getWindowHandle()获取当前窗口句柄

  • getWindowHandles()获取所有窗口的句柄

  • getTitle()获取当前窗口的标签

System.out.println("获取所有窗口的句柄: " + chromeDriver.getWindowHandles());
// 获取所有窗口的句柄: [CDwindow-0B83C18A8FC09F4940757F1E6CC14395, CDwindow-328DE54417C4A30C6B8E7C7E77872A44]

        Set<String> handles = chromeDriver.getWindowHandles();
        for (String handle: handles) {
//            切换窗口
            chromeDriver.switchTo().window(handle);
//            通过判断title,若切换到我们想要的窗口就直接退出循环
            if(chromeDriver.getTitle().equals("b.html")){
                break;
            }
        }

        System.out.println("这是b窗口的句柄: " + chromeDriver.getWindowHandle());
// 这是b窗口的句柄: CDwindow-328DE54417C4A30C6B8E7C7E77872A44
//        这里则就是在我们想要的窗口的元素进行操作
        chromeDriver.findElement(By.xpath("//input[@id='bb']")).sendKeys("this is b.html");

 

5、 select下拉选择框

  • getOptions()获取所有选项

  • selectByIndex(index)根据索引选中对应的元素(索引从0开始)

  • selectByValue(value)根据指定value值选中对应的选项

  • selectByVisibleText(text)选中文本值对应的选项

//        定位下拉选择框
        WebElement webElement = chromeDriver.findElement(By.name("se"));

//        将WebElement对象包装成Select对象
        Select select = new Select(webElement);

        select.selectByIndex(1);
        Thread.sleep(2000);
        select.selectByValue("3");

 

6、执行Javascript脚本

//        将chromeDriver强转为jsE对象
        JavascriptExecutor javascriptExecutor = (JavascriptExecutor) chromeDriver;
// 		executeScript(js脚本字符串) 可以用这个关闭readOnly属性
        javascriptExecutor.executeScript("document.getElementById('train_date').value='lwj '");

        chromeDriver.findElement(By.id("train_date")).sendKeys("is yyds");

转载请注明出处。

2021-12-31 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值