java selenium 自动化测试工具基本使用(WebDriver,WebElement),页面元素操作、定位

环境—谷歌浏览器为例
下载对应版本的chromedriver.exe
查看自己的谷歌版本,地址栏输入: chrome://version/
下载地址:http://npm.taobao.org/mirrors/chromedriver/ (Windows都下载32位)

maven仓库搜索 selenium-java 引入jar包

<dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>3.141.59</version>
</dependency>

初始化:

	//访问的网页
 	private static final String URL = "https://www.baidu.com";
    private static WebDriver driver = null;

    /**
     * 初始化driver
     */
    private static void initDriver(){
		//设置驱动chromedriver.exe
        System.setProperty("webdriver.chrome.driver","C:\\Users\\44141\\Desktop\\chromedriver\\chromedriver.exe");
        // 设置不弹出浏览器窗口
        //ChromeOptions chromeOptions = new ChromeOptions();
        //chromeOptions.addArguments("--headless");
        //driver = new ChromeDriver(chromeOptions);
        driver = new ChromeDriver();
    }
	

基本使用 WebDriver、WebElement :

 private static void test(){
        //初始化驱动
        initDriver();
        //打开浏览器
        driver.get(URL);
        //获取当前页面的url
        String currentUrl = driver.getCurrentUrl();
        System.out.println("当前页面的URL为:" + currentUrl);
        //获取最后一个被加载的页面的源代码
        String pageSource = driver.getPageSource();
        System.out.println("页面源代码:" + pageSource);
        //获取所有通过WebDriver打开的窗口的句柄,唯一标识,返回一个Set<String>的集合
        Set<String> windowHandles = driver.getWindowHandles();
        for(String s : windowHandles){
            System.out.println("循环内输出:" + s);
        }
        //获取当前窗口的句柄
        String windowHandle = driver.getWindowHandle();
        System.out.println("当前窗口的句柄:" + windowHandle);
        //跟进id获取页面元素 相当于在页面根据id选择器获取 document.getElementById()、#id,返回的对象可对获取的页面元素进行操作
        //这里是获取百度页的输入框
        WebElement element = driver.findElement(By.id("kw"));
        //sendKeys输入内容 ,也可以模拟键盘进行其他操作
        element.sendKeys("WebElement");
        //清空输入框内容
        //element.clear();
        //查看元素是否是显示状态,显示返回true ,不显示返回false , 修改样式为display:none则返回false
        boolean isDisplayed = element.isDisplayed();
        //查看元素是否已启用 页面元素设置disabled="true" 返回false
        boolean isEnabled = element.isEnabled();
        //isSelected() 查看元素是否被选中 选择框使用
        //获取标签tag的名称
        String input = element.getTagName();
        System.out.println("#kw使用的标签是:" + input);
        //获取百度首页的按钮
        WebElement btnElement = driver.findElement(By.id("su"));
        //submit提交form表单 或者 选中按钮type为submit的按钮进行提交
        btnElement.submit();
        System.out.println("当前窗口的句柄:" + windowHandle);
        try {
            //睡两秒等待页面加载
            Thread.sleep(2000);
        }catch (Exception e){
            e.printStackTrace();
        }
        //获取多个元素,里面是选择器 类似于js
        List<WebElement> list =  driver.findElements(By.className("t"));
        //这里获取到了百度首页输入 WebElement 点击搜索 查询出来的结果
        for(WebElement e : list){
            //getText获取文本 相当于 js 的document.getElementById('id').text ,$(this).text();
            System.out.println("搜索到的内容:=======" + e.getText());
        }
        System.out.println("当前窗口的句柄:" + windowHandle);
        executeJs(driver);
        System.out.println("test end");
    }

WebDriver 执行js文件:

 /**
     * 执行js代码
     * @param driver
     */
    private static void executeJs(WebDriver driver){
        JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
        //同步方法会阻塞线程直到js执行完毕
        //Object o = javascriptExecutor.executeScript("alert(1)");
        Object o = javascriptExecutor.executeScript("return $('.t').length;");
        System.out.println("执行js方法返回结果 :" + (o == null ? "空" : o.toString()));
        //判断页面是否加载完成 complete 为完成
        Object readyState = javascriptExecutor.executeScript("return document.readyState;");
        System.out.println("页面加载状态:" + readyState);
    }

关闭:

   private static void quitDriver(){
        if(driver != null){
            //关闭webDriver
            driver.quit();
        }
    }

main函数:

 public static void main(String[] args) {
        try {
            test();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            quitDriver();
        }
    }

猜你喜欢

转载自blog.csdn.net/zhaoqingquanajax/article/details/107677021