0


selenium速通

介绍

Selenium就是Web应用程序的自动化测试工具。框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。适用于多种浏览器Google Chrome、IE、Firefox......支持多种语言Java、Python......

当前文档采用Java+Chrome组合展开叙述。

环境搭建

下载驱动chromedriver

地址1:http://chromedriver.storage.googleapis.com/index.html 地址2(获取最新版驱动):Chrome for Testing availability

image.png

下载解压后把exe文件保存到相应位置,用于之后程序中调用。

引入相关jar包

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <!-- 目前来说就3.141.59这个版本好使 高版本可能会有问题 -->
    <version>3.141.59</version>
</dependency>

参数大全:List of Chromium Command Line Switches « Peter Beverloo

selenium基本使用

定位元素

driver.findElement(By.id(""))

image.png

// 仅适用于有固定ID的元素
driver.findElement(By.id("id")); // 根据唯一的id查找对应元素

// 仅适用于有name的元素,name可能存在重复,不建议使用
driver.findElement(By.name("name")); // 根据name查找对应元素

// 根据className查找对应元素
driver.findElement(By.className("className")); // 单个
driver.findElements(By.className("className")); // 一组

// 按元素的相对/绝对路径查找,具体参考xpath基本语法
driver.findElement(By.xpath("//div[@class='nest-menu']")); // div下的className=nest-menu的标签元素
driver.findElement(By.xpath("//[@id=“u1”]/a[7]")    // 该节点下第8个a标签元素

// 按css元素定位,**推荐使用**  快速、准确  ,具体参考css selector基本语法             
driver.findElement(By.cssSelector(".nest-menu"));

// 按文字链接中的文字内容,定位元素
driver.findElement(By.linkText("新闻")); // <a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>
driver.findElement(By.partialLinkText("AI")); // <a href="https://chat.baidu.com/search?isShowHello=1&amp;pd=csaitab&amp;setype=csaitab&amp;extParams=%7B%22enter_type%22%3A%22home_tab%22%7D" target="_blank" class="mnav c-font-normal c-color-t">测试测试</a>

// 按照元素标签查询,不建议,一般都会存在多个重复标签
driver.findElement(By.tagName("input"));

输入、清除内容

image.png

在定位到的输入框内,输入对应的内容。

image.png

清除 定位到的元素内对应的内容

点击操作

image.png

模拟鼠标左键点击操作,点击定位到的元素。

chromedriver常用方法

driver.get(url);     // 请求一个页面,不支持前进和后退切换
driver.getCurrentUrl(); // 获取当前页面的URL
driver.getTitle();    // 获取当前页面的标题
driver.getPageSource();    // 获取当前页面源码
driver.close();    // 关闭窗口
driver.quit();    // 关闭驱动以及所有窗口

driver.navigate().to(url); // 和get类似,支持前进和后退切换
driver.navigate().back(); // 退到上一个页面 ,前提必须前进了一个页面才能回退
driver.navigate().forward(); // 指前进到下一个页面 ,前提是必须后退后才能前进
driver.navigate().refresh(); // 刷新当前页面

常用键盘事件

ctrl+a : driver.findElement(By.id(“kw”)).sendKeys(Keys.CONTROL, “a”);
ctrl+x: driver.findElement(By.id(“kw”)).sendKeys(Keys.CONTROL, “x”);
ctrl+c: driver.findElement(By.id(“kw”)).sendKeys(Keys.CONTROL, “c”);
ctrl+v: driver.findElement(By.id(“kw”)).sendKeys(Keys.CONTROL, “v”);
F键操作: driver.findElement(By.id(“kw”)).sendKeys(Keys.F5);
TAB键: driver.findElement(By.id(“kw”)).sendKeys(Keys.TAB);
回车键: driver.findElement(By.id(“kw”)).sendKeys(Keys.ENTER);
空格键: driver.findElement(By.id(“kw”)).sendKeys(Keys.SPACE);

// 详细文档参考:https://blog.csdn.net/m0_69050443/article/details/140737148

实例

打开百度搜索

    @Test
    void openChrome() throws InterruptedException {
        // 打开浏览器
        System.setProperty("webdriver.chrome.driver", "E:\sxm\chromedriver.exe");
        ChromeDriver driver = new ChromeDriver();
        driver.get("https://www.baidu.com/");
        // 搜索对应内容
        Thread.sleep(1000);
        driver.findElement(By.id("kw")).sendKeys("黄山有什么好玩的景点?");
        Thread.sleep(1000);
        driver.findElement(By.id("su")).click();
      
//        driver.findElement(By.linkText("新闻")).click(); // 打开新闻链接
//        driver.findElement(By.partialLinkText("AI")).click(); // 打开AI助手链接

        // 关闭驱动
        Thread.sleep(3000);
        driver.quit();
    }

本文转载自: https://blog.csdn.net/qq_37721612/article/details/142827365
版权归原作者 远行无书 所有, 如有侵权,请联系我们删除。

“selenium速通”的评论:

还没有评论