• 自动化测试Selenium(3)


    目录

    WebDriver相关API

    打印信息

    打印title

    打印url

    浏览器的操作

    浏览器最大化

    设置浏览器的宽,高

     操作浏览器的前进, 后退, 刷新

    控制浏览器滚动条

    键盘事件

    键盘单键用法

    键盘组合按键用法

    鼠标事件


    WebDriver相关API

    打印信息

    打印title

    即打印该网址的标题.使用如下:

    String title = webDriver.getTitle();

    打印url

    即打印该网址的url. 使用如下:

    String url = webDriver.getCurrentUrl();

     让我们写一个基本的测试单元:

    1. private static void test04() {
    2. WebDriver webDriver = new ChromeDriver();
    3. webDriver.get("https://www.baidu.com");
    4. String title = webDriver.getTitle();
    5. String url = webDriver.getCurrentUrl();
    6. System.out.println(title);
    7. System.out.println(url);
    8. if(title.equals("百度一下,你就知道") && url.equals("https://www.baidu.com/")) {
    9. System.out.println("测试通过");
    10. } else {
    11. System.out.println("测试不通过");
    12. }
    13. }

    测试结果:

    浏览器的操作

    浏览器最大化

    我们知道启动的浏览器不是最大化的, 这样不会影响脚本的执行, 但是有时候会影响我们"观看"脚本的执行. 

    webDriver.manager.window().maxmize(); (注意这里是"mize"而不是"size"!!!)

    相似地还有一个能使得浏览器能变为全屏(就是需要esc才能缩小的那种):

    webDriver.manager.window().fullscreen();

    结果展示:

    设置浏览器的宽,高

    最大化还是不够灵活, 能不能随意地设置浏览器的宽, 高显示? 当然也是可以的. 

     webDriver.manager().window().setSize(new Dimension(600, 1000)); //注意这个方法是要创建Dimension对象, 然后传入这个对象, 而不是直接设置宽和高. (Dimension即尺寸的意思)

     操作浏览器的前进, 后退, 刷新

    浏览器上有一个后退, 前进按钮, 也相对比较容易实现:

    webDriver.navigate().back(); //后退

    webDriver.navigate().forward();//前进

    webDriver.navigate().refresh();//刷新

    这里给出一个测试用例, 自行测试:

    1. private static void test06() throws InterruptedException {
    2. WebDriver webDriver = new ChromeDriver();
    3. webDriver.get("https://www.baidu.com");
    4. webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
    5. webDriver.findElement(By.cssSelector("#su")).click();
    6. sleep(3000);
    7. webDriver.navigate().back();
    8. sleep(3000);
    9. webDriver.navigate().forward();
    10. sleep(3000);
    11. webDriver.navigate().refresh();
    12. }

    控制浏览器滚动条

     浏览器滚动条的控制需要依赖js脚本:

    ((JavaScriptExecutor)webDriver).executeScript("document.documentElement.scrollTop

    =10000"); //滑动到最底部

    ((JavaScriptExecutor)webDriver).executeScript("document.documentElement.scrollTop

    =0")//滑动到顶部

    测试代码, 自行测试:

    1. private static void test07() throws InterruptedException {
    2. WebDriver webDriver = new ChromeDriver();
    3. webDriver.get("https://www.baidu.com");
    4. webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
    5. webDriver.findElement(By.cssSelector("#su")).click();
    6. sleep(3000);
    7. ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");
    8. sleep(3000);
    9. ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=0");
    10. }

    键盘事件

    键盘单键用法

    使用之前的sendKeys()方法即可实现键盘操作

    sendKeys(Keys.TAB); //TAB

    sendKeys(Keys.ENTER); //回车

    sendKeys(Keys.SPACE); //空格

    sendKeys(Keys.ESCAPE);//回退键 (esc)

    键盘组合按键用法

    这里介绍组合键ctrl + A, ctrl + X, ctrl + V三种用法, 其它的可自行摸索.

    sendKeys(CONTROL, "A");

    sendKeys(CONTROL, "X");

    sendKeys(CONTROL, "V");

    测试代码, 自行测试:

    1. private static void test08() throws InterruptedException {
    2. WebDriver webDriver = new ChromeDriver();
    3. webDriver.get("https://www.baidu.com");
    4. webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
    5. webDriver.findElement(By.cssSelector("#kw")).sendKeys(CONTROL, "A");
    6. sleep(3000);
    7. webDriver.findElement(By.cssSelector("#kw")).sendKeys(CONTROL, "X");
    8. sleep(3000);
    9. webDriver.findElement(By.cssSelector("#kw")).sendKeys(CONTROL, "V");
    10. }

    鼠标事件

    之前我们已经学了click()方法, 这个就是鼠标左击的操作, 接下来我们来学习一下其它操作.

    Actions类用于执行各种鼠标和键盘操作.

    contextClick(element)方法用于执行鼠标右击操作.

    doubleClick(element)方法用于执行鼠标的双击操作.

    dragAndDrop(source, target)方法用于执行拖动操作, 将源元素拖动到目标元素上.

    moveToElement(element)方法用于将鼠标移动到指定的元素上.

    测试代码,自行测试:

    1. private static void test09() throws InterruptedException {
    2. WebDriver webDriver = new ChromeDriver();
    3. webDriver.get("https://www.baidu.com");
    4. webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
    5. webDriver.findElement(By.cssSelector("#su")).click();
    6. sleep(3000);
    7. //创建Actions对象
    8. Actions actions = new Actions(webDriver);
    9. //找到图片按钮
    10. WebElement webElement = webDriver.findElement(By.cssSelector("#s_tab > div > a.s-tab-item.s-tab-item_1CwH-.s-tab-pic_p4Uej.s-tab-pic"));
    11. //移动到指定元素并右击
    12. /**
    13. * 注意: perform()方法用于执行构建的操作序列. 在Selenium WebDriver中, 许多动作都需要通过
    14. * perform()方法来触发实际的执行. 在Actions类中, 使用perform()方法可以执行鼠标移动,
    15. * 点击, 拖动等操作.
    16. */
    17. actions.moveToElement(webElement).contextClick().perform();
    18. }

     注: perform()方法用于执行构建的操作序列. 在Selenium WebDriver中, 许多动作都需要通过perform()方法来触发实际执行. 在Actions类中, 使用perform()方法可以执行鼠标移动,点击, 拖动等操作.

    没有调用perform()方法, 操作序列不会被执行, 因此在使用Actions类时务必记得调用perform()方法来触发操作的实际执行. 就连远在大洋彼岸的五星上将麦克阿瑟也说到:"如果当年在对这个软件进行自动化测试时, 如果我不像当时没有调用perform()方法的话, 我也能够拿满年终奖从而为军队补充军费了罢".

  • 相关阅读:
    Android 10开始不支持创建新的HIDL
    Docker 与 K8S学习笔记(二十三)—— Kubernetes集群搭建
    nvm切换node版本
    vue3 解决双击与单击事件的冲突
    【ROS】机械人开发一--树莓派安装ubuntu18.04
    每日三题 8.24
    使用docker简单编译k20pro内核
    java-php-python-科技专业师生沟通平台计算机毕业设计
    判断对象a的值是否小于对象boperator.lt()
    169. 多数元素
  • 原文地址:https://blog.csdn.net/asdssadddd/article/details/137853736