美文网首页
如何使用selenium做自动化?

如何使用selenium做自动化?

作者: 黑咔 | 来源:发表于2019-07-22 10:40 被阅读0次

    Selenium工作原理

    Selenium2.0用到webdriver,the webdriver wireless protocol,以HTTP为基础的协议,通过post方法与server通信操作浏览器。


    Selenium工作原理

    Webdriver驱动原理:Webdriver会将对应的浏览器绑定在特定端口启动,并作为一个服务器监听来自于测试脚本的命令,selenium测试脚本通过调用该服务操作本机安装的相应的浏览器。

    webdriver可以理解成为一个服务端或者是一个桥梁,用于建立起脚本和浏览器之间的联系,webdriver本身是基于浏览器内核来开发的,所以,webdriver和浏览器有着强配套关系。

    Selenium环境搭建

    引入Selenium Jar
    可以通过使用maven管理或者非maven项目直接引入jar包
    Maven管理:
    从maven仓库https://mvnrepository.com/中搜索selenium,将dependency依赖添加到pom文件中即可。

    配置webdriver驱动器
    目前市面主流的浏览器都针对selenium开发了对应的webdriver驱动器,因而需要下载和浏览器版本对应的webdriver.exe文件。
    chromedriver依然推荐在淘宝镜像下载。http://npm.taobao.org/mirrors/chromedriver/

    设置浏览器启动路径
    要进行自动化测试,我们需要调用不同浏览器以及对应的webdriver驱动器进行操作,因此需要向脚本指定浏览器和webdriver的启动路径。

    Chrome浏览器和IE浏览器通常会自动安装在默认位置,不需要指定浏览器启动路径。
    Firefox浏览器通过
    System.setProperty(“webdriver.firefox.bin”, “火狐安装路径”);进行指定

    设置webdriver启动路径
    Webdriver启动路径可以通过指定绝对路径的方式指定,也可以将webdriver.exe拷贝到项目路径中,通过相对路径指定,建议使用相对路径,方便后期打包。

    通过System.setProperty(“webdriver.gecko.driver”, “火狐driver路径”);指定火狐浏览器的geckodriver路径。
    Chrome浏览器和IE浏览器的属性键名分别为webdriver.chrome.driver和webdriver.ie.driver

    注意:driver.close()方法和driver.quit()方法的区别,记得调用quit关闭driver进程。
    driver.quit()方法,关闭浏览器并且关闭driver.exe进程。
    driver.close()方法,只是关闭掉当前的页面窗口。不关闭driver.exe。

    在自动化测试启动webdriver浏览器时,默认是不带任何用户配置的,不会有cookie和相关设置,那么可以通过参数配置指定,加上用户文件,或者其它的一些设置。

    chromedriver的用户文件加载时,最好是复制一份到其它位置调用,否则,需要关闭手动打开的浏览器,要不然会产生冲突,导致报错。

    代码示例

    public class UITest {
    
        public static void main(String[] args) throws InterruptedException {
            // 选择不同的浏览器打开百度搜索内容
            baiduSearch(openBrowser("chrome"));
            baiduSearch(openBrowser("firefox"));
            baiduSearch(openBrowser("ie"));
    
        }
    
        static void baiduSearch(WebDriver driver) throws InterruptedException {
            driver.get("https://www.baidu.com");
            // 使用css选择器用id定位文本框并输入马云
            driver.findElement(By.cssSelector("#kw")).sendKeys("马云");
            // 使用id定位搜索按钮并点击
            driver.findElement(By.id("su")).click();
            Thread.sleep(1500);
            // 获取搜索后的title并输出
            System.out.println(driver.getTitle());
            driver.quit();
        }
    
        static WebDriver openBrowser(String browser) {
            switch (browser) {
                case "chrome":
                    System.setProperty("webdriver.chrome.driver", "UI\\webdriver\\chromedriver.exe");
                    return new ChromeDriver();
                case "firefox":
                    System.setProperty("webdriver.gecko.driver", "UI\\webdriver\\geckodriver.exe");
                    return new FirefoxDriver();
                case "ie":
                    System.setProperty("webdriver.ie.driver", "UI\\webdriver\\IEDriverServer.exe");
                    return new InternetExplorerDriver();
                default:
                    System.setProperty("webdriver.chrome.driver", "UI\\webdriver\\chromedriver.exe");
                    return new ChromeDriver();
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:如何使用selenium做自动化?

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