欢迎关注我的公众号

selenium-java web自动化测试工具-初体验

2022-02-11 12:22
193
2
添加收藏

作为传统的web项目测试都是靠测试人员,按照测试用例手动操作,费时费力还容易遗漏,如果有自动测试框架或工具,那会节省甚多人力和时间。经过寻找发现selenium项目,觉得很不错。

以下百度百科:

Selenium [1]  是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

本次体验是结合java项目使用,用的是firefox浏览器驱动,具体如下:

机器环境:max os

火狐版本:63.0.3

火狐浏览器的驱动下载地址:https://github.com/mozilla/geckodriver/releases 

jdk:1.8

maven项目,在maven的pom.xml加入依赖,如下:

测试代码如下:

    
package com.zykj.modules.web;
    import java.util.concurrent.TimeUnit;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    public class IndexController {
    	public static void main(String[] args) throws InterruptedException {
            Thread.sleep(3000);
            //谷歌
    //        System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver");
    //        WebDriver webDriver = new ChromeDriver();
            //火狐
            System.setProperty("webdriver.gecko.driver", "/usr/local/bin/geckodriver");
            WebDriver webDriver = new FirefoxDriver();
            webDriver.manage().window().maximize();
            webDriver.manage().deleteAllCookies();
            // 与浏览器同步非常重要,必须等待浏览器加载完毕
            webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            
            //打开目标地址
            webDriver.get("http://192.168.0.103:9090/renting/");
            //输入账号 密码并登陆系统
            Thread.sleep(1000);
            webDriver.findElement(By.xpath("/html/body/div/div/form/div[1]/div/div/input")).sendKeys("admin");
            webDriver.findElement(By.xpath("/html/body/div/div/form/div[2]/div/div/input")).sendKeys("cisoft");
            webDriver.findElement(By.cssSelector("html body div#app div.loginPage form.el-form.fromBox button.el-button.loginBtn.el-button--primary")).click();
            
            
            Thread.sleep(1000);
            //移动到底部
            //((JavascriptExecutor) webDriver).executeScript("window.scrollTo(0, document.body.scrollHeight)");
            //移动到指定的坐标(相对当前的坐标移动)  
            ((JavascriptExecutor) webDriver).executeScript("window.scrollBy(0, 700)");  
            Thread.sleep(1000);
            //移动到窗口绝对位置坐标,如下移动到纵坐标1600像素位置  
            ((JavascriptExecutor) webDriver).executeScript("window.scrollTo(0, 1600)");  
            Thread.sleep(1000);
            //移动到指定元素,且元素底部和窗口底部对齐 参考 https://www.cnblogs.com/testway/p/6693140.html
            ((JavascriptExecutor) webDriver).executeScript("arguments[0].scrollIntoView(false);", webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div/div[1]/div/div/div[2]/div[4]/div[3]/div[1]/a[5]/img")));
            //暂停五秒钟后关闭
            Thread.sleep(2000);
            webDriver.quit();
        }
    }
​
 

然后启动项目,在执行main的测试方法,顺利的化,你会看到火狐浏览器启动,并进入登陆页面,并输入账号密码。

遇到的错误:

    
Exception:
        java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.toImmutableSet()Ljava/util/stream/Collector;
            at org.openqa.selenium.remote.ProtocolHandshake.streamW3CProtocolParameters(ProtocolHandshake.java:284)
            at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:149)
            at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
            at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
            at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
            at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250)
            at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
            at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:137)
            at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:184)
            at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:171)
            at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:124)
            at setup.Setup.setUp(Setup.java:46)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
            at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:523)
            at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:224)
            at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:146)
            at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:166)
            at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105)
            at org.testng.TestRunner.privateRun(TestRunner.java:744)
            at org.testng.TestRunner.run(TestRunner.java:602)
            at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
            at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
            at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
            at org.testng.SuiteRunner.run(SuiteRunner.java:289)
            at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
            at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
            at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
            at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
            at org.testng.TestNG.runSuites(TestNG.java:1144)
            at org.testng.TestNG.run(TestNG.java:1115)
            at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
            at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)
            at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)
            Suppressed: java.io.IOException: Incomplete document
                at com.google.gson.stream.JsonWriter.close(JsonWriter.java:544)
                at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:167)
                ... 35 more
 
 

解决办法(原来我获取的是20的所以报错,获取21就行了):

初次体验到此结束啦,后续会有更加详细的记录。

全部评论

10
2022-02-16 10:04
回复 @ :嘻嘻
2022-02-12 12:34
優秀喔
2022-02-12 12:34
優秀喔