Eclipse与selenium自动化基础

一、Eclipse与selenium环境搭建 

  1、安装JDK1.6

    配置环境变量:
    JAVA_HOME = E:\Java\Java\jdk1.7.0_15
    PATH = %JAVA_HOME%\bin
    CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
    配置完环境变量后,CMD命令行输入:java -version,返回版本结果,则表示安装成功。

  2、安装Eclipse

    解压出来后直接用。

  3、安装Firefox 32之前版本 

    1)工具-选项-高级-更新:选择不检查更新
    2)工具-附加组件:安装SeleniumIDE、Firebug、Firepath组件

  4、录制

    1)工具-SeleniumIDE:录制一段脚本
    2)导出命名为.java的脚本:SeleniumIDE-文件-Export Test-java/JUnit 4/WebDriver
    3)打开Eclipse:创建一个项目,把到脚本复制到项目下。
    4)导入selenium-server-standalone-2.39.0.jar包
    5)运行

二、使用selenium的webdirver模块对浏览器进行操作

  WebDriver driver = new FirefoxDriver();
  String baseUrl = "http://www.maiziedu.com/";
  driver.get(baseUrl); //打开麦子学院
  driver.getTitle() //得到当前网页的title driver.getTitle().indexOf("麦子") != -1
  driver.getCurrentUrl() //得到当前网页的url driver.getCurrentUrl().indexOf("maizi") != -1
  driver.manage().window().maximize(); //浏览器最大化
  driver.navigate().to("http://www.baidu.com"); //打开百度
  driver.navigate().refresh();//刷新浏览器
  driver.navigate().back();//浏览器后退
  driver.navigate().forward();//浏览器前进
  driver.close();//关闭当前页面
  driver.quit();//关闭所有窗口

  截图操作:
    driver.get(""http://www.baidu.com"");
    File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(srcFile, new File(""c:\\1.png""));

  模拟鼠标操作:
    driver.get(""http://www.baidu.com"");
    Actions action = new Actions(driver);
    action.contextClick(driver.findElement(By.id(""kw""))).perform();
    杀掉Windows浏览器进程
    WindowsUtils.tryToKillByName(""firefox.exe"");

三、webdriver模块对web UI元素进行操作

  链接:
    WebElement element = driver.findElement(By.linkText(""小坦克""));
    element.click();

  输入框:
    driver.findElement(By.id(""userid"")).clear();//清空输入框
    driver.findElement(By.id(""userid"")).sendKeys(""test111111"");//输入内容
    driver.findElement(By.id(""userid"")).getAttribute(""value"");//获取输入框的内容"

  按钮:
    String xpath = ""//input[@value='添加']"";//value值为“添加”的input元素
    WebElement element = driver.findElement(By.xpath(xpath));//获取元素
    element.click();//点击
    element.isEnabled();//判断按钮是否可用

  下拉选者框:
    Select select = new Select(driver.findElement(By.id(""proAddItem"")));
    select.selectByIndex(2);//选择第三个选项,index从0开始
    select.selectByValue(""18"");//选择value=18的选项
    select.selectByVisibleText(""种类AA"");//选择文本值为“种类AA”的选项
    List<WebElement> options = select.getOptions();//获取所有的选项

  单选按钮:
    String xpath = ""//input[@type='radio'][@value='Apple']"";//taype=radio,value=Apple的input元素
    WebElement apple = driver.findElement(By.xpath(xpath));//获取元素
    apple.click();//选择单选框
    apple.isSelected();//单选框是否被选择
    apple.getAttribute(""value"");//获取元素属性

  多选框:
    String xpath = ""//input[@type='checkbox'][@value='Apple']"";//taype=checkbox,value=Apple的input元素
    String xpath1 = ""//input[@type='checkbox'][@value='Banana']"";//taype=checkbox,value=Apple的input元素
    WebElement apple = driver.findElement(By.xpath(xpath));//获取元素
    WebElement Banana = driver.findElement(By.xpath(xpath1));//获取元素
    apple.click();
    Banana.click();
    apple.isSelected();//多选框是否被选择
    Banana.isSelected();//多选框是否被选择
    apple.getAttribute(""value"");//获取元素属性
    Banana.getAttribute(""value"");//获取元素属性

四、XPath 定位(一旦页面结构发生改变,绝对路径也随之失效,必须重新。 所以不推荐使用绝对路径的写法)

  相对路径定位://input[@value="查询"] 查找value="查询"的input元素
  索引号定位://input[2] 查找页面中第三个input元素,下标从0开始
  页面属性定位://img[@alt='div1-img1'] 查找alt='div1-img1'的img元素
  starts-with关键字模糊定位://img[starts-with(@alt,'div')] 查找alt属性从div开始的img元素
  contains关键字模糊定位://img[contains(@alt,'g1')] 查证alt属性包含'g1'的img元素
  text()函数 文本定位://*[text()='百度搜索'] 查找所有文本为“百度搜索的元素”
  //a[contains(text(),'搜索')] 查证所有文本为“搜索”的超链接

五、多窗口切换

  Set<String> allWindowsId = driver.getWindowHandles();//所有打开的窗口
  for (String windowId : allWindowsId) {
    if (driver.switchTo().window(windowId).getTitle().contains(""博客园"")) {
      driver.switchTo().window(windowId);//切换到目标窗口
      break;
    }
  }
  String parentWindowId = driver.getWindowHandle();//获取当前窗口
  driver.switchTo().window(parentWindowId);//切回到父窗口

六、弹出框

  WebElement alertButton = driver.findElement(By.xpath(""//input[@value='alert']""));
  Alert alert = driver.switchTo().alert();
  driver.accept();

猜你喜欢

转载自www.cnblogs.com/lilyo/p/11912028.html