51Testing软件测试论坛

标题: selenium报错,求大神指教 [打印本页]

作者: karena1314ait    时间: 2016-6-2 16:00
标题: selenium报错,求大神指教
我的selenium封装了个login方法,在执行第一自动化用例后用了close方法。再执行第二个自动化用例时再次调用login方法打开时报了下面的错误,求各位大神帮忙看看是什么问题,小弟求教了。
Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 16:57:40'
System info: host: 'admin-PC', ip: '192.10.11.102', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_73'
Driver info: driver.version: RemoteWebDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=46.0.1, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: abb6772c-a0d9-4426-abe0-00dd8e2d118b
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:665)
        at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:316)
        at seleniumtest.TestBase.login(TestBase.java:38)
        at infoplat.ResourceManagement.Edit1(ResourceManagement.java:75)
        at run.Open.main(Open.java:17)
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:7056 [/127.0.0.1] failed: Connection refused: connect
        at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
        at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
        at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
        at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
        at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
        at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
        at org.openqa.selenium.remote.internal.ApacheHttpClient.fallBackExecute(ApacheHttpClient.java:162)
        at org.openqa.selenium.remote.internal.ApacheHttpClient.execute(ApacheHttpClient.java:90)
        at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
        at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.execute(NewProfileExtensionConnection.java:160)
        at org.openqa.selenium.firefox.FirefoxDriver$LazyCommandExecutor.execute(FirefoxDriver.java:380)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:644)
        ... 4 more
Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
        at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
        at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
        at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:74)
        at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134)
        ... 19 more
作者: jjnha    时间: 2016-6-3 09:53
" Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:7056 [/127.0.0.1] failed: Connection refused: connect "
作者: 清晨一缕阳光    时间: 2016-6-3 10:12
1.从报错信息来看,第一个用例打开的浏览器直接Close()。再执行第二个用例的时候有没有再次打开浏览器?
2. Close()---Close the current window, quitting the browser if it's the last window currently open;
3.如果想不关闭浏览器,可以使用testng或者Junit中的注解,把打开浏览器的操作放在@beforeclass或者@beforemethod中,这样只打开一次浏览器执行完所有的用例后再关闭浏览器就可以。


作者: karena1314ait    时间: 2016-6-3 10:41
jjnha 发表于 2016-6-3 09:53
" Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:7056 [/127.0.0.1] f ...

这个错误我看到了,可是网上查了下都是说版本不兼容。没有其他解释。我感觉不像版本不兼容。肯定是哪里错了
作者: karena1314ait    时间: 2016-6-3 10:41
jjnha 发表于 2016-6-3 09:53
" Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:7056 [/127.0.0.1] f ...

这个错误我看到了,可是网上查了下都是说版本不兼容。没有其他解释。我感觉不像版本不兼容。肯定是哪里错了
作者: karena1314ait    时间: 2016-6-3 10:42
清晨一缕阳光 发表于 2016-6-3 10:12
1.从报错信息来看,第一个用例打开的浏览器直接Close()。再执行第二个用例的时候有没有再次打开浏览器?
2 ...

因为我每个用例最后都加了close()所以会报错,如果只在最后一个方法后面加close就可以全部执行。但是我是想每个方法都能close()这个怎么搞?求指教。
作者: 清晨一缕阳光    时间: 2016-6-3 10:47
karena1314ait 发表于 2016-6-3 10:42
因为我每个用例最后都加了close()所以会报错,如果只在最后一个方法后面加close就可以全部执行。但是我是 ...

第一个用例Close()后,第二个用例有没有再打开?
作者: karena1314ait    时间: 2016-6-3 11:16
清晨一缕阳光 发表于 2016-6-3 10:47
第一个用例Close()后,第二个用例有没有再打开?

有的,我写的login()方法,每个用例开始都会调login()方法的
public abstract class TestBase {
//        private ProfilesIni allProfiles = new ProfilesIni();
//        private FirefoxProfile profile = allProfiles.getProfile("default");
        public WebDriver test=new ChromeDriver();
        private Actions action = new Actions(test);       
       
        /**
         * 登录系统
         */
        public void login(){
                System.setProperty("webdriver.chrome.bin","C:\\Users\\admin\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe");
                String url="http://192.10.22.239:8080/infoplat/login";//公司内测试地址
//                String url="http://10.250.190.201:8080/infoplat/login";//公司内测试地址=
                test.navigate().to(url);
                test.findElement(By.id("username")).sendKeys("autotest1");
                test.findElement(By.id("password")).sendKeys("000000");
                test.findElement(By.id("validateCode")).sendKeys("1");
                test.findElement(By.id("loginBtn")).click();
                }
作者: hzieechenwei    时间: 2016-6-3 15:04
每一个新的session开始的时候,会自动启动浏览器,你这里一个case执行结束后,把唯一的一个浏览器窗口也关掉了,这样子浏览器自己也会关闭,第二个case自然找不到浏览器了,而且selenium的API也没有提供打开新浏览器的command。
Close用来关闭当前的浏览器窗口,但是如果你当前只有一个window,是不应该关闭的,这个时候不如直接用Quite退出整个session。

我的建议是,改变你的代码的结构
在case setup里面new ChromeDriver
在case teardown里面 Quite

这样子每一个case都会重新启动一个session,我不知道你把new ChromeDriver放在构造函数里面用意何在,为了重用session节省时间?new一个新session的时间相对于执行case的时间,应该是可以忽略的
作者: xhgd    时间: 2016-6-22 16:44
请问这个问题你解决了么?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2