Maven+selenium入门教程

一、环境搭建

官网需要下载selenium对应的jar包,谷歌浏览器及对应的驱动

官网下载地址:http://www.seleniumhq.org/download/

浏览器驱动:https://www.npmjs.com/package/selenium-webdriver

Maven+selenium入门教程_第1张图片

2、jdk环境变量

jdK下载地址:https://www.oracle.com/technetwork/java/javaee/downloads/index.html

环境变量配置参考:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html

3、maven中pom文件配置需要的jar包支持

Maven+selenium入门教程_第2张图片

如果是java Project,直接导入下载的jar包就行了

Maven+selenium入门教程_第3张图片

二、Selenium WebDriver运行原理

Maven+selenium入门教程_第4张图片

使用eclipse打开WebDriver.class文件会发现里面支持许多方法的调用

Maven+selenium入门教程_第5张图片

三、常见API用法

1.1打开浏览器

想要浏览器完成界面元素的操作,首页要通过WebDriver打开浏览器,WebDriver为上面下载的

System.setProperty("webdriver.chrome.driver", "C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\chromedriver.exe");

webdriver=new ChromeDriver();

/*设置隐私等待让浏览器正常运行*/

webdriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

打开firefox浏览器:

            WebDriver driver = new FirefoxDriver(); 

打开IE浏览器

            WebDriver driver = new InternetExplorerDriver ();

打开chrome浏览器

       WebDriverdriver = new ChromeDriver();

1.2.1  最大化浏览器

  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");

1.4  页面元素定位

Webdriver提供下面两种方法来定位页面元素,参数是By对像,最常用是By.id和By.name查找。

findElement   定位某个元素,如果没有找到元素会抛出异常:NoSuchElementException

findElements     定位一组元素

 例如需要定位如下元素:

   

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:

      //通俗点就是精确查询

      WebDriver driver = new FirefoxDriver();

      driver.get("http://www.baidu.com/"); 

      WebElement element = driver.findElement(By.linkText("百科"));

By.partialLinkText:

      //这个方法就是模糊查询

      WebDriver driver = new FirefoxDriver();

      driver.get("http://www.baidu.com/"); 

      WebElement element = driver.findElement(By.partialLinkText("hao"));

By.tagName:

      WebDriver driver = new FirefoxDriver();

      driver.get("http://www.baidu.com/");

      String test= driver.findElement(By.tagName("form")).getAttribute("name");

      System.out.println(test); 

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截图保存图片文件

Maven+selenium入门教程_第6张图片

1.6  WindowHandle和 Frames之间的切换

例如从登陆页面跳转到index页面,此时WindowHandle就会发生变化,通过封装webdriverde的getWindowsHandle方法就可解决该问题

Maven+selenium入门教程_第7张图片

再就是Frames的切换,后台系统用的比较多

源码就是这样的,套两层frameset,里面放frame

Maven+selenium入门教程_第8张图片

 

 

 

 

当进入到这个页面时,driver停留在最大的frameset上,如果需要操作left页面就需要使用

webdriver.switchTo().frame(left);

如果left页面操作完需要操作top或者main的页面时,需要先从frame返回到frameset再

到子frameset的frame中,思路如下

webdriver.switch_to_parent_frame();

webdriver.switchTo().frame(main);

从main返回到left时就需要

webdriver.switch_to_parent_frame();

webdriver.switch_to_parent_frame();

webdriver.switchTo().frame(main);

1.7  表格(Table)

先找到table,再找到对应列或者行,赋值给list,for循环取出值

Maven+selenium入门教程_第9张图片

你可能感兴趣的:(Maven+selenium入门教程)