美文网首页
元素基本操作&WebDriver常用API

元素基本操作&WebDriver常用API

作者: testerPM | 来源:发表于2020-01-14 09:29 被阅读0次

    ----------------------------------------元素WebElement常见API---------------------------------------
    (1)click()
    触发当前元素的点击事件
    (2)clear()
    清空内容

                   openBrowser("chrome");
            driver.get("http://www.baidu.com");
            // 定位到input框输入关键字
            driver.findElement(By.id("kw")).sendKeys("腾讯课堂");
            // 线程等待3秒(由于代码执行速度快)
            Thread.sleep(3000);
            driver.findElement(By.id("kw")).clear();
    
    
    

    (3)sendKeys()
    往文本框一类元素中写入内容

      element.sendKeys("腾讯课堂");//输入内容 腾讯课堂
    

    按键操作

    element.sendKeys(Keys.CONTROL,"a");//ctrl+a  全选
    element.sendKeys(Keys.CONTROL,"x");//ctrl+x   剪切
    element.sendKeys(Keys.CONTROL,"c");//ctrl+c   复制
    element.sendKeys(Keys.CONTROL,"v");//ctrl+v  粘贴
    element.sendKeys(Keys.ENTER);// 回车
    element.sendKeys(Keys.BACK_SPACE);// 空格 
    
    
    
                   openBrowser("chrome");
            driver.get("http://www.baidu.com");
            // 定位到input框
            WebElement element = driver.findElement(By.id("kw"));
            // 输入关键字
            element.sendKeys("腾讯课堂");
            // 线程等待3秒(由于代码执行速度快)
            Thread.sleep(3000);
            // 全选
            element.sendKeys(Keys.CONTROL, "a");
            Thread.sleep(2000);
            // 剪切
            //element.sendKeys(Keys.CONTROL, "x");
            //复制
            element.sendKeys(Keys.CONTROL,"c");
            Thread.sleep(2000);
            // 粘贴
            element.sendKeys(Keys.CONTROL, "v");
            element.sendKeys(Keys.CONTROL, "v");//Keys.CONTROL,这里的Keys是枚举类型
    
    
    
    

    (4)getTagName()
    获取元素的标签名
    (5)getAttribute(属性名)
    根据属性名获取元素属性值
    (6) getText()
    获取当前元素的文本值
    (7)isDisplayed()
    查看元素是否显示
    (8)submit
    提交表单

    
            openBrowser("chrome");
            driver.get("http://www.baidu.com");
            // 定位到input框
            WebElement element = driver.findElement(By.id("kw"));
            // 输入关键字
            element.sendKeys("腾讯课堂");
            // 线程等待3秒(由于代码执行速度快)
            Thread.sleep(3000);
            // 获取 element 元素的标签名
            System.out.println(" 元素的标签名 :  " + element.getTagName());
            // 根据的元素的属性名获取属性值
            System.out.println("class属性的属性值:" + element.getAttribute("class"));// 获取input标签的class属性的属性值
            // 获取input标签的文本值
            System.out.println("标签的文本值:" + element.getText());// input 这里是没有文本值的
            // 查看元素是否显示出来----肉眼可见
            System.out.println("元素是否显示:  " + element.isDisplayed());
    
            // 退出浏览器
            driver.quit();
    
    

    上面代码执行结果:
    class属性的属性值:s_ipt
    标签的文本值:
    元素是否显示: true

    (7)isDisplayed()----查看元素是否显示---特别举例说明

    以百度首页---设置----高级搜索为例
    

    打开百度首页,当前html找不到 高级搜索(不存在)------------------------------------------元素WebElement常见API---------------------------------------
    (1)click()
    触发当前元素的点击事件
    (2)clear()
    清空内容

                   openBrowser("chrome");
            driver.get("http://www.baidu.com");
            // 定位到input框输入关键字
            driver.findElement(By.id("kw")).sendKeys("腾讯课堂");
            // 线程等待3秒(由于代码执行速度快)
            Thread.sleep(3000);
            driver.findElement(By.id("kw")).clear();
    
    
    

    (3)sendKeys()
    往文本框一类元素中写入内容

      element.sendKeys("腾讯课堂");//输入内容 腾讯课堂
    

    按键操作

    element.sendKeys(Keys.CONTROL,"a");//ctrl+a  全选
    element.sendKeys(Keys.CONTROL,"x");//ctrl+x   剪切
    element.sendKeys(Keys.CONTROL,"c");//ctrl+c   复制
    element.sendKeys(Keys.CONTROL,"v");//ctrl+v  粘贴
    element.sendKeys(Keys.ENTER);// 回车
    element.sendKeys(Keys.BACK_SPACE);// 空格 
    
    
    
                   openBrowser("chrome");
            driver.get("http://www.baidu.com");
            // 定位到input框
            WebElement element = driver.findElement(By.id("kw"));
            // 输入关键字
            element.sendKeys("腾讯课堂");
            // 线程等待3秒(由于代码执行速度快)
            Thread.sleep(3000);
            // 全选
            element.sendKeys(Keys.CONTROL, "a");
            Thread.sleep(2000);
            // 剪切
            //element.sendKeys(Keys.CONTROL, "x");
            //复制
            element.sendKeys(Keys.CONTROL,"c");
            Thread.sleep(2000);
            // 粘贴
            element.sendKeys(Keys.CONTROL, "v");
            element.sendKeys(Keys.CONTROL, "v");//Keys.CONTROL,这里的Keys是枚举类型
    
    
    
    

    (4)getTagName()
    获取元素的标签名
    (5)getAttribute(属性名)
    根据属性名获取元素属性值
    (6) getText()
    获取当前元素的文本值
    (7)isDisplayed()
    查看元素是否显示
    (8)submit
    提交表单

    
            openBrowser("chrome");
            driver.get("http://www.baidu.com");
            // 定位到input框
            WebElement element = driver.findElement(By.id("kw"));
            // 输入关键字
            element.sendKeys("腾讯课堂");
            // 线程等待3秒(由于代码执行速度快)
            Thread.sleep(3000);
            // 获取 element 元素的标签名
            System.out.println(" 元素的标签名 :  " + element.getTagName());
            // 根据的元素的属性名获取属性值
            System.out.println("class属性的属性值:" + element.getAttribute("class"));// 获取input标签的class属性的属性值
            // 获取input标签的文本值
            System.out.println("标签的文本值:" + element.getText());// input 这里是没有文本值的
            // 查看元素是否显示出来----肉眼可见
            System.out.println("元素是否显示:  " + element.isDisplayed());
    
            // 退出浏览器
            driver.quit();
    
    

    上面代码执行结果:
    class属性的属性值:s_ipt
    标签的文本值:
    元素是否显示: true

    (7)isDisplayed()----查看元素是否显示---特别举例说明

    以百度首页---设置----高级搜索为例
    

    打开百度首页,当前html找不到 高级搜索(不存在)----当鼠标放到 设置上,再f12,可以定位到 高级搜索

    
                   openBrowser("chrome");
            driver.get("http://www.baidu.com");
            // 使用 xpath进行元素 定位 //a[text()="高级搜索"]
            // WebElement element = driver.findElement(By.xpath("//a[text()=\"高级搜索\"]"));
            // 使用超链接文本定位
            WebElement element = driver.findElement(By.linkText("高级搜索"));
            // 查看元素是否显示出来----肉眼可见
            System.out.println("元素是否显示:  " + element.isDisplayed());
            // 退出浏览器
            driver.quit();
    
    
    

    上面代码执行结果:

    Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"link text","selector":"高级搜索"}
    
    

    元素定位不到常见原因:
    1 定位表达式错误
    2 元素没有加载出来
    3 元素被隐藏(不存在当前的html中)---需要通过鼠标悬停事件才可以显示
    我们这里的原因是:元素被隐藏

    -------------------------------------------------解决办法如下---------------------------------------

                    openBrowser("chrome");
            driver.get("http://www.baidu.com");
            // 找到设置并点击
            driver.findElement(By.xpath("//div[@id=\"u1\"]//a[text()=\"设置\"]")).click();
    
            // 使用 xpath进行元素 定位 //a[text()="高级搜索"]
            // WebElement element = driver.findElement(By.xpath("//a[text()=\"高级搜索\"]"));
            // 使用超链接文本定位
            // 默认打开百度,高级搜索默认没有被渲染在当前html中,所以找不到元素
            WebElement element = driver.findElement(By.linkText("高级搜索"));
            // 查看元素是否显示出来----肉眼可见
            System.out.println("元素是否显示:  " + element.isDisplayed());
            // 退出浏览器
            driver.quit();
    
    

    这里需要注意的是:driver.findElement(By.linkText("高级搜索"));超文本连接定位可能会不太稳定,有时候能定位到有时候不能定位到,如果定位不到,就换一种定位方式如上面的xpath

    -------------------------------------------submit提交表单--------------------------------------------

    
    openBrowser("chrome");
            driver.get("http://120.78.128.25:8765/index/login.html");
            // 输入手机号
            driver.findElement(By.xpath("//input[@name=\"phone\"]")).sendKeys("13333333333");
            // 输入密码
            driver.findElement(By.xpath("//input[@name=\"password\"]")).sendKeys("1234567");
            // 点击 登录
            // driver.findElement(By.xpath("//button[contains(@class,\"btn\")]")).click();
            // 提交表单
            driver.findElement(By.xpath("//form[@name=\"login-form\"]")).submit();
            Thread.sleep(3000);
            // 退出浏览器
            driver.quit();
    
    
    
    

    一般都是通过点击,不是很常用submit

    相关文章

      网友评论

          本文标题:元素基本操作&WebDriver常用API

          本文链接:https://www.haomeiwen.com/subject/tiuoactx.html