美文网首页
Maven+selenium入门教程

Maven+selenium入门教程

作者: yertao | 来源:发表于2018-11-20 15:26 被阅读0次

    一、环境搭建

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

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

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

    2、jdk环境变量

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

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

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

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

    二、Selenium WebDriver运行原理

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

    三、常见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     定位一组元素

     例如需要定位如下元素:

      <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:

          //通俗点就是精确查询

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

    1.6  WindowHandle和 Frames之间的切换

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

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

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

    <html>

    <frameset rows="*" cols="150,*">

      <frame src="/example/html/frame_a.html" id="left">

      <frameset rows="50,*">

      <frame src="/example/html/frame_b.html" id="top">

      <frame src="/example/html/frame_c.html" id="main">

    </frameset>

    </frameset>

    </html>

    当进入到这个页面时,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入门教程

          本文链接:https://www.haomeiwen.com/subject/zwxafqtx.html