博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium自动化-入门1
阅读量:5161 次
发布时间:2019-06-13

本文共 4330 字,大约阅读时间需要 14 分钟。

  起初写博客是为了妹子学习,现在发现忽略了最基础的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 ();  //判断按钮是否enable
1.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(); 获取文本,判断文本内容。

  1. Assert.assertTrue(字符串.contains(预期));
  2. Assert.assertEquals(实际值 , 期望值);

By: Jack.Zhong

记得点赞哦

 

转载于:https://www.cnblogs.com/zhongmeizhi/p/6296684.html

你可能感兴趣的文章
C#教程之打印和打印预览
查看>>
linux下解压命令大全
查看>>
C语言开发面试题
查看>>
VC++读写文件
查看>>
小程序-冒泡事件
查看>>
myEclipse快捷键
查看>>
数据结构练习(36)二叉树两结点的最低共同父结点
查看>>
WCF编程系列(一)初识WCF
查看>>
python远程控制电脑
查看>>
android之实现底部TabHost
查看>>
解除与设置计算机锁定
查看>>
PAT A1110 Complete Binary Tree (25 分)——完全二叉树,字符串转数字
查看>>
OpenCV学习笔记-\doc\tutorials\core\basic_linear_transform
查看>>
安装 gradle
查看>>
只输入数字
查看>>
抽屉问题 吃糖果
查看>>
js常用的数组去重方法
查看>>
Setting up a Reverse Proxy using IIS, URL Rewrite and ARR
查看>>
bzoj 4818: [Sdoi2017]序列计数
查看>>
生成对抗网络(Generative Adversarial Network)阅读笔记
查看>>