• Java使用Selenium几个例子


    零、姿势

    Selenium分为两个版本:Selenium RC和Selenium Webdriver。现在用Selenium Webdriver比较多。
    Selenium是一套工具,而不仅仅是一个操纵浏览器的库,它包括Selenium IDE,Selenium Grid等。
    Selenium对Firefox浏览器支持得最好,对Chrome支持并不完善。Chrome的设计原则就是安全,让用户安全,由此带来的误伤比较多,对开发人员就不太友好,比如Chrome会自动检测跨域访问并禁止之,Firefox就不会。Firefox的设计原则就是开放,对开发人员十分友好。
    SeleniumIDE是Firefox的一款插件,这个插件可以录制用户操作,保存下来的是一个指令序列,这个指令序列可以转换成Java、Python、C#等语言的测试代码。当不知道某个操作怎么写时,可以先用SeleniumIDE操作一下并导出代码,略微改改就能直接用了。

    一、进行百度搜索并点击链接

       //WebDriver是一个接口,每一种浏览器都有一个实现类(多态)
       WebDriver webDriver = new FirefoxDriver();
       webDriver.manage().window().maximize();
       //与浏览器同步非常重要,必须等待浏览器加载完毕
       webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
       //下面这句等价于webDriver.navigate().to("www.baidu.com");
       webDriver.get("http://www.baidu.com");
       //在输入框中填写要搜索的内容
       WebElement kw = webDriver.findElement(By.id("kw"));
       kw.sendKeys("java用selenium库控制chrome");
       //点击搜索按钮
       WebElement su = webDriver.findElement(By.id("su"));
       su.click();
       webDriver.findElements(By.className("result")).forEach(x -> {
          System.out.println(x.getText());
       });
       //寻找包含weiyinfu的搜索条目
       webDriver.findElement(By.partialLinkText("weiyinfu")).click();
       //webDriver.close();
       System.out.println("Hello World!");
    

    二、新标签页打开链接

    两种方式,一个原理。原理就是模拟快捷键。

    
    /**
     * 原理就是模拟浏览器的快捷键CTRL+T,
     * 由此可知,通过快捷键的方式可以实现的功能,
     * 例如:前进、后退、书签、收藏等操作都可以实现
     */
    public class 新标签页打开链接 {
    static void method1(WebDriver webDriver) {
       Actions actionOpenLinkInNewTab = new Actions(webDriver);
       actionOpenLinkInNewTab.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).perform();
       webDriver.get("http://www.baidu.com");
       actionOpenLinkInNewTab.perform();
       webDriver.switchTo().window(webDriver.getWindowHandles().toArray()[1].toString());
       webDriver.get("http://www.baidu.com");
    }
    
    static void method2(WebDriver webDriver) {
       webDriver.get("http://www.baidu.com");
       webDriver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
       webDriver.switchTo().window(webDriver.getWindowHandles().toArray()[1].toString());
       webDriver.get("http://www.baidu.com");
    }
    
    public static void main(String[] args) {
       //设置好浏览器驱动器的位置
       System.setProperty("webdriver.gecko.driver",
               "C:\Users\weidiao\Desktop\geckodriver-v0.16.1-win64\geckodriver.exe");
       WebDriver webDriver = new FirefoxDriver();
          method1(webDriver);
    //   method2(webDriver);
    }
    }
    
    

    三、模拟登陆博客园并发表评论

       WebDriver webDriver = new FirefoxDriver();
       //设置默认等待时间,如果没有发现要找的元素就会默认等待30秒钟
       webDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
       webDriver.get("http://www.cnblogs.com/weidiao");
       webDriver.findElement(By.id("homepage1_HomePageDays_DaysList_ctl01_DayList_TitleUrl_0")).click();
       webDriver.findElement(By.linkText("登录")).click();
       webDriver.findElement(By.id("input1")).clear();
       webDriver.findElement(By.id("input1")).sendKeys("weiyinfu");
       webDriver.findElement(By.id("input2")).clear();
       webDriver.findElement(By.id("input2")).sendKeys("xxxxxxx");
       webDriver.findElement(By.id("remember_me")).click();
       webDriver.findElement(By.id("signin")).click();
       webDriver.findElement(By.id("tbCommentBody")).sendKeys("现在时间" + new Date());
       webDriver.findElement(By.id("btn_comment_submit")).click();
    

    四、资源

    selenium可以驱动好多种浏览器
    http://www.seleniumhq.org/download/

    chromedriver下载地址
    https://chromedriver.storage.googleapis.com/index.html?path=2.9/

    易百教程
    http://www.yiibai.com/selenium/selenium_ide.html#article-start

    webdriver中文社区
    http://www.webdriver.org/article-26-1.html

    一个比较完整的selenium测试教程
    http://www.51testing.com/zhuanti/selenium.html

    selenium入门
    http://www.cnblogs.com/weidiao/p/5930468.html
    selenium进阶
    http://www.cnblogs.com/weidiao/p/5930739.html
    HTMLUnit:无头浏览器
    http://www.cnblogs.com/weidiao/p/5931339.html

  • 相关阅读:
    测试工具PerfDog的使用
    1.人工智能解读与Python简介
    如何提高百度网盘下载速度小技巧(亲测有效!)
    学习方法
    字符串换行工具类/每隔几位插入指定字符串
    java对pdf文件加文字水印 itextpdf
    centos 7.6 安装jdk8
    1 elk软件的安装
    Springboot 2.2.1 与activeMq 集成2 topic 发布者,订阅者
    Springboot 2.2.1 与activeMq 集成2 queue 消息
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/7088963.html
Copyright © 2020-2023  润新知