美文网首页
元素基本操作&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