selenium的基本操作

目录

定位元素

xpath

绝对路径

相对路径

css

xpath和css比较

xpath的缺点

xpath的优点

基本操作

点击 清空 退出操作

获取 url 和文本

获取属性值和文本

等待

鼠标事件

浏览器页面前进 后退 刷新操作

浏览器界面大小设置

键盘组合键操作

切换窗口

滚动条操作

截图操作


定位元素

xpath

XPath 是一种在XML 文档中定位元素的语言。因为HTML 可以看做XML 的一种实现,所以selenium 可以使用这种强大语言在web 应用中定位元素。

xpath定位元素有两种方式:绝对路径 和 相对路径

绝对路径

相对路径

 //xpath定位元素
    private static void test16() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        //相对路径
        webDriver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("北京");
        webDriver.findElement(By.xpath("//*[@id=\"su\"]")).click();
        //绝对路径
        webDriver.findElement(By.xpath("/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input")).sendKeys("北京");
        webDriver.findElement(By.xpath("/html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input")).click();
    }

css

CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML 和XML 文档的表现。 CSS 使用选择器来为页面元素绑定属性。

    //css定位元素
    private static void test17() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("上海");
        webDriver.findElement(By.cssSelector("#su")).click();
    }

这里的标签式就是前端css的选择器,这里不细说,具体可以参考 CSS知识讲解-CSDN博客

可以明显看出来这两种方式css是相对简单的。

文章主要使用css定位元素的方式进行代码的书写

xpath和css比较

上边的代码可以明显看出来,xpath的方式比较繁琐和复杂。

xpath的缺点

1. xpath的方式 效率 比较低,因为xpath会将页面先加载在内存中,然后驱动器(webDriver)扫描整个文件,在整个文件中进行查找。

2. xpath会随着页面布局的改变而改变,几乎不能维护。

xpath的优点

1. xpath可以做布尔逻辑判断

//*[@id="kw" and @name = "wd"]

2. 可以模糊定位

starts-with(属性,值):以什么开头     

ends-with(属性,值):以什么结尾       

contains(属性,值):包含什么

//*[starts-with(@value,'百度-')]

基本操作

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);
        //查看返回的结果的条数,返回的是List
        List webElements=webDriver.findElements(By.cssSelector("em"));
        System.out.println(webElements.size());
        if(webElements.size()==0){
            System.out.println("搜索失败");
        }else{
            System.out.println("搜索成功");
        }
    }

点击 清空 退出操作

get("url") //进入页面

click() //点击

clear() //清空

quit() //退出,关闭浏览器

close() //退出,关闭当前界面

  public static void test5(){
        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();
        webDriver.findElement(By.cssSelector("#kw")).clear();
    }

获取 url 和文本

getTitle() //获取标题

getCurrentUrl() //获取当前url

    //获取页面title url
    private static void test10() {
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver=new ChromeDriver(options);
        webDriver.get("https://www.baidu.com/");
        String url=webDriver.getCurrentUrl();
        if(url.equals("https://www.baidu.com/")){
            System.out.println(url+"测试通过");
        }else{
            System.out.println(url+"测试不通过");
        }
        //标题
        String title = webDriver.getTitle();
        if(title.equals("百度一下,你就知道")){
            System.out.println(title+"测试通过");
        }else{
            System.out.println(title);
        }
      //webDriver.quit();
    }

获取属性值和文本

getText() //只能获取div标签中的标题

getAttrubute(" ") //获取任意标签中的属性

 private static void test15() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        //任意标签中的文本属性都可以获取到
        System.out.println(webDriver.findElement(By.cssSelector("#su")).getAttribute("value"));
        System.out.println(webDriver.findElement(By.cssSelector("#su")).getAttribute("type"));
        //只能获取到div标签中的文本
        System.out.println(webDriver.findElement(By.cssSelector("#s-hotsearch-wrapper")).getText());
    }

等待

主要有三种等待: 强制等待 显示等待 隐式等待

    private static void test14() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("上海");
        webDriver.findElement(By.cssSelector("#su")).click();
        //强制等待, 这里等待5秒
        sleep(5000);
       //隐式等待
        webDriver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
        //显示等待
        WebDriverWait wait=new WebDriverWait(webDriver,11);
        wait.until(ExpectedConditions.titleIs("百度一下,你就知道"));
    }

鼠标事件

方法:

moveToElement() //移动到元素中心位置

click() //单机

doubleClick() //双击

contextClick() //右击

clickAndHold() //单机不松开

release() //释放当前按下的左键

 //鼠标操作perform():执行操作
    private static void test13() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("上海");
        webDriver.findElement(By.cssSelector("#su")).click();
        //鼠标操作
        Actions action=new Actions(webDriver);
        WebElement element = webDriver.findElement(By.cssSelector("#searchTag > div > div > a:nth-child(5) > span"));
        //移动到元素中心
        action.moveToElement(element).perform();
        //双击
        action.doubleClick(element).perform();
        //单击
        action.click(element).perform();
        //右击
        action.contextClick(element).perform();
        //单机不松开
        action.clickAndHold(element).perform();
        sleep(3000);
        //释放按下的左键
        action.release(element).perform();
    }

浏览器页面前进 后退 刷新操作

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

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

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

//浏览器前进后退操作
    private static void test11() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("北京");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3_000);
        //后退
        webDriver.navigate().back();
        sleep(3000);
        //前进
        webDriver.navigate().forward();
        sleep(3000);
        //刷新
        webDriver.navigate().refresh();
    }

浏览器界面大小设置

webDriver.manage().window().maximize(); //最大化

webDriver.manage().window().fullscreen(); //全屏

webDriver.manage().window().setSize(new Dimension(500,500)); //自定义设置

 //浏览器屏幕大小设置
    private 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.manage().window().maximize();
        sleep(5000);
        webDriver.manage().window().fullscreen();
        sleep(5000);
        webDriver.manage().window().setSize(new Dimension(500,500));
        sleep(5000);
        webDriver.quit();

    }

键盘组合键操作

通过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")  #全选,其余的几个操作格式一样

 //快捷键的操作
    private static void test12() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("北京");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(5000);
        //全选
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL+"A");
        sleep(2000);
        //剪贴
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL+"X");
        //刷新页面
        webDriver.navigate().refresh();
        sleep(2000);
        //粘贴
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL+"V"+"歌曲");
        sleep(2000);
        webDriver.findElement(By.cssSelector("#su")).click();

    }

切换窗口

 //切换窗口到最新的一个
    private static void test8() {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(4)")).click();
        Set windowHandles = webDriver.getWindowHandles();
        String window="";
        for(String handle:windowHandles){
            window=handle;
        }
        System.out.println(window);
        webDriver.switchTo().window(window);
        webDriver.findElement(By.cssSelector("#forumList > li:nth-child(3) > a")).click();
        webDriver.close();

    }

滚动条操作

 //滚动条操作
    private static void test7() throws InterruptedException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com/");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("北京");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(5000);
        ((JavascriptExecutor)webDriver).executeScript("Document.documentElement.scrollTop=10000;");
        webDriver.quit();
    }

截图操作


    //截图
    private static void test6() throws IOException {
        WebDriver webDriver=new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        File src = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(src, new File("D:/桌面/jietu.png"));
    }

你可能感兴趣的:(selenium,测试工具)