起初写博客是为了妹子学习,现在发现忽略了最基础的Selenium教程,所以:从本博客开始编辑 Selenium 入门知识。(学好Java)
Selenium 入门 1:(学好Java)
录制回放,简单粗暴(如下图)。就不解释了。
Selenium 环境搭建(学好Java)
Selenium是个 Java 的jar包,所以。必须要搭建好 Java 环境,既Path路径。例如下图
然后 Selenium jar包导入 eclipse,方法很多。只讲最简单的,
环境搭建完毕。
搭建好环境了,那么该怎么操作呢? 还记得怎么使用 hello word 么? 没错。
举一反三。聪明的你,现在是不是只缺API了呢。
好的,搬运工开始了。
API(Selenium操作,纯粹搬运工)
然后就可以按照 Selenium 的API开始啦。
API 链接 http://seleniumhq.github.io/selenium/docs/api/java/index.html
1 用webdriver打开一个浏览器
打开firefox浏览器: WebDriver driver = new FirefoxDriver(); 打开IE浏览器 WebDriver driver = new InternetExplorerDriver (); 打开chrome浏览器 WebDriverdriver = new ChromeDriver();1.2.2 最大化浏览器
WebDriver driver = new FirefoxDriver(); driver.manage().window().maximize();1.2.3 关闭浏览器
WebDriver driver = new FirefoxDriver(); driver.close(); driver.quit();1.3 打开测试页面 driver.get("http://www.google.com"); driver.navigate().to("http://www.baidu.com/"); P.S.navigate方法会产生1个Navigator对象,其封装了与导航相关的一些方法,比如前进后退等1.4 页面元素定位
Webdriver提供下面两种方法来定位页面元素,参数是By对像,最常用是By.id和By.name查找。 findElement 定位某个元素,如果没有找到元素会抛出异常:NoSuchElementException findElements 定位一组元素 例如需要定位如下元素: <input class="input_class" type="text" name="passwd" id="passwd-id" /> By.id: WebElement element = driver.findElement(By.id("passwd-id")); By.name: WebElement element = driver.findElement(By.name("passwd")); By.xpath: WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']")); By.className WebElement element = driver.findElement(By.className("input_class")); By.cssSelector WebElement element = driver.findElement(By.cssSelector(".input_class")); By.linkText: WebElement element = driver.findElement(By.linkText("百科")); By.partialLinkText: //这个方法就是模糊查询 WebElement element = driver.findElement(By.partialLinkText("hao")); By.tagName: String test= driver.findElement(By.tagName("form")).getAttribute("name"); 1.5 如何对页面元素进行操作1.5.1 输入框(text field or textarea) WebElement element = driver.findElement(By.id("passwd-id")); element.sendKeys(“test”);//在输入框中输入内容: element.clear(); //将输入框清空 element.getText(); //获取输入框的文本内容: 1.5.2下拉选择框(Select) Select select = new Select(driver.findElement(By.id("select"))); select.selectByVisibleText(“A”); select.selectByValue(“1”); select.deselectAll(); select.deselectByValue(“1”); select.deselectByVisibleText(“A”); select.getAllSelectedOptions(); select.getFirstSelectedOption(); 1.5.3单选项(Radio Button) WebElement radio=driver.findElement(By.id("BookMode")); radio.click(); //选择某个单选项 radio.clear(); //清空某个单选项 radio.isSelected(); //判断某个单选项是否已经被选择1.5.4多选项(checkbox) WebElement checkbox = driver.findElement(By.id("myCheckbox.")); checkbox.click(); checkbox.clear(); checkbox.isSelected(); checkbox.isEnabled();1.5.5按钮(button)WebElement btn= driver.findElement(By.id("save")); btn.click(); //点击按钮 btn.isEnabled (); //判断按钮是否enable1.5.7弹出对话框(Popup dialogs) Alert alert = driver.switchTo().alert(); alert.accept(); //确定 alert.dismiss(); //取消 alert.getText(); //获取文本1.5.8表单(Form) Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以: WebElement approve = driver.findElement(By.id("approve")); approve.click();或 approve.submit();//只适合于表单的提交 1.5.9上传文件 WebElement adFileUpload =driver.findElement(By.id("WAP-upload")); String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg"; adFileUpload.sendKeys(filePath); 1.6 Windows 和 Frames之间的切换 driver.switchTo().defaultContent(); //返回到最顶层的frame/iframe driver.switchTo().frame("leftFrame"); //切换到某个frame: driver.switchTo().window("windowName"); //切换到某个window 1.7 调用Java Script JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("JS脚本"); 1.8 超时设置 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //识别元素时的超时时间 driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //页面加载时的超时时间 driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS); //异步脚本的超时时间自由等待(隐形等待)
new WebDriverWait(driver,10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='btnAddEnlistAddorUpdate_relType']")));
最后,该怎么断言呢?
断言就是用上面的 API给的 getxxx() 的方法,拿到实际值。然后断言是否等于case设定的预期。
最常用的是 element.getText(); 获取文本,判断文本内容。
- Assert.assertTrue(字符串.contains(预期));
- Assert.assertEquals(实际值 , 期望值);
记得点赞哦