(六-3)从查找元素到操作元素
在WebDriver中,将这些关于鼠标操作的方法封装在ActionChains类提供。
Actions 类提供了鼠标操作的常用方法:
-
contextClick() 右击
-
clickAndHold() 鼠标点击并控制
-
doubleClick() 双击
-
dragAndDrop() 拖动
-
release() 释放鼠标
-
perform() 执行所有Actions中存储的行为
文本框输入文本:sendkeys()
清空文本框:clear()
获取文本:getText() ---> 只能取出标签中间的文本
获取title:getTitle()
获取tagName:getTagName()
获取属性值:getAttribute()
判断元素是否展示:isDisplayed()
判断选择框是否被选取:isSelected()
判断输入框是否被激活:isEnabled()
eg:
package Day2OperateElement; import org.apache.commons.io.FileUtils; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; import java.io.IOException; import java.util.List; public class OperateElement { WebDriver webDriver; @BeforeMethod public void OpenBrowser(){ System.setProperty("webdriver.chrome.driver","D:\\Program Files\\Java\\Webautomation\\drivers\\chromedriver.exe"); webDriver = new ChromeDriver(); } /* 1.click() 打开百度新闻链接并校验当前链接是否正确打开 */ @Test public void OpenLink(){ webDriver.get("https://www.baidu.com/"); WebElement newslink = webDriver.findElement(By.name("tj_trnews")); newslink.click(); String linkurl = webDriver.getCurrentUrl(); Assert.assertEquals(linkurl,"http://news.baidu.com/","当前输出不是新闻链接"); } /* 2.sendKeys(),getTitle(), 打开百度搜索框输入selenium, 点击百度一下搜索,搜索出来的第一行是不是指定值来确定搜索结果 当前搜索结果正确,清除搜索框内内容*/ @Test public void sendkeysTest() throws InterruptedException { webDriver.get("https://www.baidu.com/"); //定位搜索框 WebElement inputkuang = webDriver.findElement(By.id("kw")); //输入selenium值,注意sendkeys只针对文本框 inputkuang.sendKeys("selenium"); //定位百度按钮并点击 WebElement baiduButton = webDriver.findElement(By.id("su")); baiduButton.click(); //给页面一个反应时间3s,网速快的时候可能没到就获取到了,网速慢可能30s都不行,sleep不是最好的方法 Thread.sleep(3000); //获取页面title并做校验 String title = webDriver.getTitle(); Assert.assertEquals(title,"selenium_百度搜索"); //清除输入框文本,如果有出错,则清空重新输入 inputkuang.clear(); //清除结束后校验文本框内的String是否是空,不建议再assert方法胡再操作 //gettext获取的标签中间的值,所以当input框输入时并不在inputi标签中间,会获取到空白值 String title2 = inputkuang.getText(); System.out.println(title2); } /* 3.getText(), 打开百度首页获取右上角所有的文本并输出*/ @Test public void getTexttest(){ webDriver.get("https://www.baidu.com/"); List<WebElement> listtext = webDriver.findElements(By.xpath("//*[@id=\"u1\"]/a")); for (int i =0;i < listtext.size();i++){ String text1 = listtext.get(i).getText(); System.out.println(text1); } } /*4.getTagname(), 打开百度首页,获取文本框的tagname,检验是不是input*/ @Test public void getTagnametest(){ webDriver.get("https://www.baidu.com/"); WebElement TgElement = webDriver.findElement(By.id("kw")); String tagname = TgElement.getTagName(); Assert.assertEquals(tagname,"input","输出tagname是错误的"); } /* 5.getAttribute(), getText只能获取到标签内的文本,如果要获取value也就是一个框内的默认值和输入值则用当前的getAttribute, 或者按钮值是什么 ①打开百度搜索框(打开页面,定位元素,操作元素,输出结果,比对结果) ②输入webdriver ③获取搜索框的value的属性值 */ @Test public void getAttributeTest(){ webDriver.get("https://www.baidu.com/"); WebElement AtElement = webDriver.findElement(By.id("kw")); AtElement.sendKeys("webdriver"); String att = AtElement.getAttribute("value"); System.out.println(att); } @Test //对于按钮,查看网页元素上面写得是value,查看百度一下的按钮值是不是百度一下 public void getAttributeTest1(){ webDriver.get("https://www.baidu.com/"); String buttonatt = webDriver.findElement(By.id("su")).getAttribute("value"); Assert.assertEquals(buttonatt,"百度一下","不符合预期"); } /* 6.isDisplayed(), 打开百度,校验百度以下按钮已经展示(先定位按钮,再检验是否展示) * */ @Test public void isDisplayedTest(){ webDriver.get("https://www.baidu.com/"); Boolean bl = webDriver.findElement(By.id("su")).isDisplayed(); Assert.assertTrue(bl,"校验百度按钮是否显示"); } /* 7.isSelected(), 判断选择框是否选择:单选框,复选框是否被选中,返回也为布尔类型 打开页面https://www.wjx.cn/jq/17141631.aspx(此处选择问卷星的任意一份问卷) 校验单选框已经选中 * */ @Test public void isSelectedTest(){ webDriver.get("https://www.wjx.cn/jq/17141631.aspx"); WebElement radio1 = webDriver.findElement(By.xpath("//*[@id=\"divquestion1\"]/ul/li[1]/a")); radio1.click(); Boolean bl2 = radio1.isSelected(); Assert.assertTrue(bl2,"未婚没有被选中"); } @Test public void isSelectedTest1(){ webDriver.get("C:\\Users\\CXM\\Desktop\\textselected.html"); WebElement radio2 = webDriver.findElement(By.xpath("//*[@id=\"as\"]")); radio2.click(); Boolean bl3 = radio2.isSelected(); Assert.assertTrue(bl3,"男没有被选中"); } /*8.isEnabled(), 测试当前按钮是否激活*/ @Test public void isEnabled(){ webDriver.get("C:\\Users\\CXM\\Desktop\\textselected.html"); Boolean enablea = webDriver.findElement(By.id("login")).isEnabled(); Assert.assertTrue(enablea); } /* 9.打开百度截图 把webelement的格式webdriver强制转换成文件流类型 截图只是当前打开的窗口,比如一个网页很长,但是他截图当前窗口*/ @Test public void screenShotFile(){ //下面代码得到截图保存再D盘 webDriver.get("https://www.baidu.com/"); File screenShotFile = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE); try{ FileUtils.copyFile(screenShotFile,new File("D:/test.png")); }catch(IOException e){ e.printStackTrace(); } } }
自己写了一个html操作页面放在桌面供给当前测试用例进行元素操作:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk" /> <title>Checkbox</title> </head> <body> <h3>复选框:CheckBox</h3> <form> <!-- <label for="c1">checkbox1</label> --> <input type="checkbox" id="c1" />checkbox1<br> <!-- <label for="c2">checkbox2</label> --> <input type="checkbox" id="c2" />checkbox2<br> <!-- <label for="c3">checkbox3</label> --> <input type="checkbox" id="c3" />checkbox3<br> </form> <h3>单选:Radio</h3> <form> <label value="radio">男</label> <input type="radio" name="sex" value="male" id="as"/><br> <label value="radio1">女</label> <input type="radio" name="sex" value="female" id="sd"/> </form> <input type="submit" name="denglu" id="login" value="登陆" /> <input type="button" name="zhuce" id="register" value="注册" /> <!-- <form> <input type="radio" name="sex" value="male" /> Male <br /> <input type="radio" name="sex" value="female" /> Female </form> --> </body> </html>
声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/
如出现转载未声明 将追究法律责任~谢谢合作